阵列没有正确保留?

时间:2011-09-02 13:54:05

标签: objective-c ios arrays retain

运行我的应用程序时出现以下错误:

  

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'< / p>

Xcode将此功能中的行标记为绿色:

- (void)oneCheckAndSetStrokes {
playerOneScoreNum.text = [playerOneScore objectAtIndex:(11)]; }

因此我猜测有些东西搞砸了Array。在som研究之后,我遇到了很多像这样的帖子:NSMutableArray : unrecognized selector sent to instance这似乎意味着当数组没有被正确保留(因此我的标题)时会发生错误。

所以我试图将文件保留在它启动的文件中(顺便说一句,这个文件与上面的代码不同。数组也在另一个文件中定义,Globals.h,然后导入),按以下方式:

- (void)viewDidLoad {
[super viewDidLoad];
playerOneScore = [[NSMutableArray alloc] initWithCapacity:19];
[playerOneScore retain]; }

根据之前提到的帖子,这可以解决问题,但在我的情况下却没有。有没有人遇到类似的东西?好像我在这里错过了一些微不足道的东西。

谢谢Tobias Tovedal

1 个答案:

答案 0 :(得分:3)

你得到的错误与保留无关,你得到了这个错误,因为在这一行:

playerOneScoreNum.text = [playerOneScore objectAtIndex:(11)];

您正在尝试使用数字对象设置字符串属性!你必须以这种方式使用“stringValue”:

playerOneScoreNum.text = [[playerOneScore objectAtIndex:11] stringValue];

ps:用括号包装索引(11)是没用的:P