2011-06-01 56 views
8

我試圖運行我的應用程序時不斷收到此問題。它成功地編譯:被卡住,在它出現numberOfRowsInSection - 無法識別的選擇器發送到實例問題

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]; 
} 
+0

是什麼的tableView?請顯示相關代碼。 – MByD 2011-06-01 14:24:58

+0

它似乎被卡住的代碼是: ' - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {self.colorNames count]; }' – 2011-06-01 14:29:11

+0

請編輯該問題,不要在評論中添加此內容。 – MByD 2011-06-01 14:30:55

回答

31

類的實例,您已分配給DataSource沒有實現UITableViewDataSource功能。

@interface MyClassController :UIViewController <UITableViewDelegate,UITableViewDataSource> 

嘗試如下。

myTableView.dataSource = self; 

*注selfMyClassController

實例實施UITableViewDataSource協議的方法。

+0

嗯,實際上它工作。非常感謝。但我想知道:這個代碼實現的解決方案可能應該做同樣的事情,在Storyboard中設置dataSource和委託,不是嗎? – 2016-11-12 15:19:05

12

很可能您希望您的應用程序代表成爲您的數據源,但意外地將File's Owner(即UIApplication對象)作爲數據源。這就是應用程序對象似乎正在獲取數據請求的原因。

+0

我做過了,但是我對此很感興趣,並且正在學習本教程,因爲我認爲這樣做很困難,所以我很困惑如何繼續。 [鏈接](http://www.techotopia.com/index.php/Creating_a_Simple_iOS_4_iPhone_Table_View_Application_(Xcode_4)) – 2011-06-01 14:39:02

+0

選擇「文件所有者」並檢查右側的「身份檢查器」。那裏有什麼類名? – 2011-06-01 14:41:43

+0

類名是UIApplication。 – 2011-06-01 14:43:36

3

該問題很可能是由於將文件所有者作爲表視圖的委託和數據源分配而導致的。正如其他人所說,文件的所有者是一個UIApplication對象,它不符合UITableView必須符合的UITableViewDelegate和UITableViewDataSource協議。如果您使用的是IB,則只需將Table View連接至代表和數據源的受尊敬的View Controller,而不是文件的所有者。

0

我剛剛面臨這個問題,我認爲在某些情況下,這個問題是由於新的XCode錯誤。
-I刪除xib文件中的表格視圖對象。
- 重新創建它,然後將數據源和委託連接到文件的所有者。
- 清理項目然後再次運行,它沒有任何錯誤。

0

我只是刪除了XIB中的tableView的連接,並刪除了tableView並重新創建它。

工作。

感謝@ENVIL

7

enter image description here

檢查您的數據源和委託出口被正確連接到您的viewController ... 這個工作對我..

+0

非常感謝您解決了花費數小時來調試的問題。 – Mina 2016-11-23 13:54:12

相關問題