【发布时间】:2011-09-02 13:54:05
【问题描述】:
运行我的应用程序时出现以下错误:
2011-09-02 15:38:44.157 TheApp[9973:207] -[NSCFNumber isEqualToString:]:无法识别的选择器发送到实例 0x4b28990
2011-09-02 15:38:44.160 TheApp[9973:207] *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[NSCFNumber isEqualToString:]:无法识别的选择器发送到实例 0x4b28990”
并且 Xcode 将这个函数中的行标记为绿色:
- (void)oneCheckAndSetStrokes {
playerOneScoreNum.text = [playerOneScore objectAtIndex:(11)]; }
因此,我猜想阵列出了点问题。经过一番研究,我发现了很多类似这样的帖子:NSMutableArray : unrecognized selector sent to instance,这似乎表明当数组没有正确保留时会发生错误(因此我的标题)。
所以我试图将数组保留在启动它的文件中(顺便说一下,它与上面的代码不是同一个文件。数组也在另一个文件 Globals.h 中定义,然后导入),通过以下方式:
- (void)viewDidLoad {
[super viewDidLoad];
playerOneScore = [[NSMutableArray alloc] initWithCapacity:19];
[playerOneScore retain]; }
根据前面提到的帖子,这将解决问题,但在我的情况下它没有。有没有人遇到过类似的事情?似乎我在这里遗漏了一些琐碎的事情。
【问题讨论】:
-
首先,如果你分配一个 NSMutable 数组,你不必保留它。确保它不会意外地在其他地方发布。另请注意,这可能无关紧要,但是您为什么将 11 放在“()”中?我很确定这是不必要的。
-
感谢您的评论,daveoncodes 帖子中的解决方案。是的,关于 (11),我不知道我为什么这样做。
标签: objective-c ios arrays retain