3

我有这个带有NSArray对象 userIDs的实现文件

NSArray *userIDs;
NSInteger friendID;

@implementation TableViewController

-(void)reciveFriendsIDs:(NSArray *)array
 {
userIDs = [NSArray arrayWithArray:array];
 }

-(NSString *)getFriendId
{
 return [userIDs objectAtIndex:friendID];
}
.
.
.
@end

并且该方法-(NSString *)getFriendId从另一个类中调用它,如下所示:

TableViewController *tableController = [[TableViewController alloc]init];
NSString *fid = [tableController getFriendId];

但我有一个错误说“-[__NSArrayI respondsToSelector:]: message sent to deallocated instance 0x20320200”,编译器在这一行指出错误:

return [userIDs objectAtIndex:friendID];
4

2 回答 2

11

您正在使用 arrayWithArray 静态方法分配 NSArray。

通过这种方式,它被添加到自动释放池中,并且保留计数将为 0。要么保留它,要么使用 [[NSArray alloc] init] 手动分配它

于 2012-07-15T09:26:03.813 回答
0

我在网上遇到了同样的例外

 if(self.arrTypes != nil)

在代码中的不同位置使用以下行的原因

 [self.arrTypes release];

并将此代码替换为

 self.arrTypes = nil;

解决了这个问题。

于 2015-09-02T21:37:40.877 回答