簡體   English   中英

在iPhone模擬器中可用,但在手機上不可用

[英]Works in iPhone Simulator, but not on Phone

因此,我有一個可以在模擬器上正常運行的應用程序,但在實際設備上卻無法正常運行。

在運行時,它給我以下錯誤:

2010-12-05 19:58:32.006 Sports[4668:307] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableView isEqualToString:]: unrecognized selector sent to instance 0x800800'

關於結構的一些知識:我有一個標簽欄控制器,第一個視圖是UINavigationController。

該視圖中有一個UITableView。 可能相關或不相關的一件事是,如果我執行@synthesize tableView; 在表視圖控制器中,該表在模擬器和電話上均保持空白(但不會崩潰)。

如果我將其取出,它將在模擬器上加載正確的數據,並在電話上崩潰。

接口構建器中委托/數據源應鏈接到何處? 我嘗試將其鏈接到“視圖”到“文件的所有者”,並制作一個新的“ ViewController”,但這些都不起作用。

delegatedataSource都應鏈接到File's OwnerFile's Owner是將表視圖聲明為IBOutlet的視圖控制器類; 這應該是擁有nib文件的同一視圖控制器。 此外,該視圖控制器應實現UITableViewDelegateUITableViewDataSource協議。

再添加@synthesize行(除非您將UITableViewController子類化為注釋中的grahamparks指出!),確保這些連接正確,最后,確保已為表視圖聲明IBOutlet ,並將其正確連接到您的類和界面生成器之間

找到了!

事實證明,這根本沒有問題。 問題是在手機上運行時,數據庫中的日期字段始終為零/無。

為什么? 因為創建的NSDate對象從不初始化,而是保持為零。

為什么?

因為我的電話在24小時內,並且沒有正確解析上午和下午。

得到教訓!

在NSZombieEnabled設置為yes的情況下運行您的應用。 有關其說明以及如何設置的說明,請參見http://www.cocoadev.com/index.pl?NSZombieEnabled 我認為您會發現,該應用程序現在將在模擬器中引發異常,告訴您您正在向已發布的對象發送消息。

根據收到的錯誤消息,我認為罪魁禍首是NSString或NSMutableString對象。 如果這是一個NSString,則發出警告,該NSString可以由多個不同的對象共享,因此弄清楚額外發布的位置可能很困難。

不用擔心,Instruments在這方面提供了極大的幫助。 這是一個鏈接,該鏈接說明了如何使用Instruments准確地找到對象的保留和釋放位置,以便您可以查找不適合的釋放版本。 http://www.markj.net/iphone-memory-debug-nszombie/

祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM