0

所以我有一个应用程序,它可以在模拟器上正常运行,但不会在实际设备上运行。适用于iPhone模拟器,但不适用于电话

在运行时,它给了我下面的错误:

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;在表格视图控制器中,表格在模拟器和手机上都保持空白(但不会崩溃)。

如果我把它拿出来,它会在模拟器上加载正确的数据,并在手机上崩溃。

Delegate/dataSource应该在Interface Builder中链接到哪里?我尝试将它链接到“视图”到“文件的所有者”,并创建一个新的“视图控制器”,没有一个工作。

+0

此外,我甚至对[UITableView isEqualToString:]甚至被调用的位置感到困惑。 – Kevin 2010-12-06 02:08:40

回答

2

delegatedataSource都应该链接到File's Owner,这是视图控制器类,它将表视图声明为IBOutlet;这应该是拥有nib文件的相同视图控制器。此外,该视图控制器应实施UITableViewDelegateUITableViewDataSource协议。

添加一个@synthesize线回来,(除非你继承UITableViewController,如在评论grahamparks指出!)确保这些连接是正确的,最后,确保你已经声明了一个IBOutlet表格视图,并在您的类和界面构建器之间正确连接。

+0

是的,代表和数据源链接到文件的所有者。表视图有一个名为tableView的IBOutlet。虽然我没有看到在界面生成器中链接的位置。有一个叫做“视图”的插座,我连接到文件的所有者。在FirstViewController下有我的tableView,但将它连接到表视图似乎也没有帮助。 – Kevin 2010-12-06 01:58:59

+0

你必须在你的视图控制器头文件中为你的tableView声明一个出口,用@property(nonatomic,retain)IBOutlet UITableView * tableView;`。然后,您应该会看到该连接在界面构建器中显示。这有效吗? – 2010-12-06 02:00:45

0

用NSZombieEnabled设置为yes运行您的应用程序。请参阅http://www.cocoadev.com/index.pl?NSZombieEnabled以获取关于它的说明以及如何设置它。我认为你会发现应用程序现在会在模拟器中抛出一个异常,告诉你你正在向已发布的对象发送消息。

根据您收到的错误消息,我期望罪魁祸首是一个NSString或NSMutableString对象。如果它是一个NSString,然后警告,NSString可以被几个不同的对象共享,因此找出多余的版本可能很难。

虽然不要害怕,但乐器在这方面的帮助非常大。这里是一个链接,解释如何使用工具来确切地找出您的对象被保留和释放的位置,以便您可以追踪哪个版本不合适。 http://www.markj.net/iphone-memory-debug-nszombie/

祝你好运!

1

找到了!

原来,这根本没有问题。问题在于我的数据库中的日期字段在我的手机上运行时始终为零/零。

为什么?因为创建的NSDate对象从未初始化并且保持为零。

为什么?

因为我的手机在2​​4小时内没有正确解析am和pm。

经验教训!

相关问题