numberOfRowsInSection - нераспознанный селектор, отправленный на выпуск экземпляра - PullRequest
8 голосов
/ 01 июня 2011

Я продолжаю получать эту проблему, пытаясь запустить мое приложение.Он успешно компилируется:

    GNU gdb 6.3.50-20050815 (Apple version gdb-1518) (Thu Jan 27 08:30:35 UTC 2011)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-apple-darwin".Attaching to process 1833.
2011-06-01 10:20:07.576 MicroBetas[1833:207] -[UIApplication tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x4d0f9e0
2011-06-01 10:20:07.580 MicroBetas[1833:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIApplication tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x4d0f9e0'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x00ecbbe9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x00cc05c2 objc_exception_throw + 47
    2   CoreFoundation                      0x00ecd6fb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x00e3d366 ___forwarding___ + 966
    4   CoreFoundation                      0x00e3cf22 _CF_forwarding_prep_0 + 50
    5   UIKit                               0x001cff16 -[UISectionRowData refreshWithSection:tableView:tableViewRowData:] + 1834
    6   UIKit                               0x001cd9e7 -[UITableViewRowData numberOfRows] + 108
    7   UIKit                               0x000848c2 -[UITableView noteNumberOfRowsChanged] + 132
    8   UIKit                               0x000912b8 -[UITableView reloadData] + 773
    9   UIKit                               0x0008e470 -[UITableView layoutSubviews] + 42
    10  QuartzCore                          0x01612451 -[CALayer layoutSublayers] + 181
    11  QuartzCore                          0x0161217c CALayerLayoutIfNeeded + 220
    12  QuartzCore                          0x0160b37c _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 310
    13  QuartzCore                          0x0160b0d0 _ZN2CA11Transaction6commitEv + 292
    14  UIKit                               0x0001a19f -[UIApplication _reportAppLaunchFinished] + 39
    15  UIKit                               0x0001a659 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 690
    16  UIKit                               0x00024db2 -[UIApplication handleEvent:withNewEvent:] + 1533
    17  UIKit                               0x0001d202 -[UIApplication sendEvent:] + 71
    18  UIKit                               0x00022732 _UIApplicationHandleEvent + 7576
    19  GraphicsServices                    0x01021a36 PurpleEventCallback + 1550
    20  CoreFoundation                      0x00ead064 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
    21  CoreFoundation                      0x00e0d6f7 __CFRunLoopDoSource1 + 215
    22  CoreFoundation                      0x00e0a983 __CFRunLoopRun + 979
    23  CoreFoundation                      0x00e0a240 CFRunLoopRunSpecific + 208
    24  CoreFoundation                      0x00e0a161 CFRunLoopRunInMode + 97
    25  UIKit                               0x00019fa8 -[UIApplication _run] + 636
    26  UIKit                               0x0002642e UIApplicationMain + 1160
    27  MicroBetas                          0x00002299 main + 121
    28  MicroBetas                          0x00002215 start + 53
)
terminate called after throwing an instance of 'NSException'
sharedlibrary apply-load-rules all
Current language:  auto; currently objective-c
(gdb) 

Код, в котором он застревает:

- (NSInteger)tableView:(UITableView *)tableView 
 numberOfRowsInSection:(NSInteger)section {
    return [self.colorNames count];
}

Ответы [ 6 ]

31 голосов
/ 01 июня 2011

Экземпляр класса, который вы назначили для DataSource, не реализует функции UITableViewDataSource.

 @interface MyClassController :UIViewController <UITableViewDelegate,UITableViewDataSource>

Попробуйте, как показано ниже.

myTableView.dataSource = self;

* Примечание self является экземпляром MyClassController

, реализующим метод протокола UITableViewDataSource.

12 голосов
/ 01 июня 2011

Весьма вероятно, что вы предполагали, что ваш делегат приложения будет вашим источником данных, но случайно сделали File's Owner, который является UIApplication объектом, источником данных.По этой причине объект приложения, похоже, получает запросы данных.

7 голосов
/ 28 мая 2014

enter image description here

Убедитесь, что ваш источник данных и выход делегата правильно подключены к вашему viewController ... Это сработало для меня ..

3 голосов
/ 07 февраля 2013

Скорее всего, проблема вызвана назначением владельца файла в качестве делегата табличного представления и источника данных.Как уже упоминалось, владельцем файла является объект UIApplication, который не соответствует протоколам UITableViewDelegate и UITableViewDataSource, которым должен соответствовать UITableView.Если вы используете IB, просто подключите Table View к соответствующему View Controller как для делегата, так и для источника данных вместо владельца файла.

0 голосов
/ 25 сентября 2013

Я просто удалил соединение tableView в XIB, удалил tableView и заново его создал.

Работает.

Спасибо @ ENVIL

0 голосов
/ 17 июля 2013

Я только что столкнулся с этой проблемой, и я думаю, что в некоторых случаях эта проблема вызвана новой ошибкой XCode.
-Я удаляю объект табличного представления в xib-файле.
-Создание, а затем подключаем источник данныхи делегировать Владельцу файла.
- Очистить проект и запустить его снова, он работает без ошибок.

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