Странные ошибки приемника / селектора из numberOfSectionsInTableView iPhone SDK, сообщенные из Flurry - PullRequest
3 голосов
/ 21 февраля 2011

Я использую Flurry для отслеживания статистики моего приложения для iPhone, и в последнее время я вижу несколько ДЕЙСТВИТЕЛЬНО странных ошибок. Казалось бы, случайные объекты получают сообщение «numberOfSectionsInTableView», и я понятия не имею, как и почему. Приложение было разработано с использованием SDK 4.2.1 и предназначено для устройств iOS 4.0. Вот фрагмент некоторых примеров:


NSInvalidArgumentException: -[NSCFString numberOfSectionsInTableView:]: unrecognized selector sent to instance 0x4f3de10

NSInvalidArgumentException: -[__NSCFData numberOfSectionsInTableView:]: unrecognized selector sent to instance 0x4f55bc0

NSInvalidArgumentException: -[NSPathStore2 numberOfSectionsInTableView:]: unrecognized selector sent to instance 0x4f5ebc0

NSInvalidArgumentException: -[__NSCFType numberOfSectionsInTableView:]: unrecognized selector sent to instance 0x2ac5f0

NSInvalidArgumentException: -[PLPhoto numberOfSectionsInTableView:]: unrecognized selector sent to instance 0x2fbc30

NSInvalidArgumentException: -[PLPhotoLibrary numberOfSectionsInTableView:]: unrecognized selector sent to instance 0x725ea20

Я только указываю numberOfSectionsInTableView в моих обычных методах делегата UITableView, но не вызываю его напрямую. Единственный найденный код, который вызывает этот метод напрямую, находился в библиотеке ASIHTTPRequest:


    if (section == [self numberOfSectionsInTableView:aTableView]-1) {
        return 30;
    }
    return 0;

Но это было в "ASIAuthenticationDialog.m", и я не использую аутентификацию с ASIHTTPRequest.

Кто-нибудь видел что-нибудь подобное раньше? Я открыт для любых предложений, довольно озадачен здесь и пока не могу воспроизвести его.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 21 февраля 2011

Звучит как классическая проблема переиздания.Вы перевыпустили объект, и вместо этого отправляется сообщение по другому случайному объекту.

Включите обнаружение зомби и попробуйте снова выполнить тестовый набор.

0 голосов
/ 08 марта 2016

У меня была та же проблема, и моя проблема заключалась в том, что я создал источник данных локально в методе, и он работает с той же проблемой памяти

- (void)setupDataSource {
  /* some code to create sections */
  TransactionDetailDataSource *dataSource = [[TransactionDetailDataSource alloc] initWithSections:sections];

  self.tableView.dataSource = dataSource;
  self.tableView.delegate = dataSource;

  [self.tableView reloadData];
}

... Поэтому мне пришлось создать новое свойство

@property (nonatomic, strong) TransactionDetailDataSource *dataSource;

и добавьте эту строку

self.dataSource = dataSource;

в конце метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...