我有一个带有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:]:消息发送到解除分配的实例0x20320200"并且编译器在此行中指出错误:
return [userIDs objectAtIndex:friendID];
答案 0 :(得分:10)
您正在使用arrayWithArray静态方法分配NSArray。
通过这种方式,它会被添加到自动释放池中,并且保留计数将为0。 保留它或用[[NSArray alloc] init]
手动分配它答案 1 :(得分:0)
我在线上获得了同样的例外
if(self.arrTypes != nil)
在代码中的其他位置使用以下行的原因
[self.arrTypes release];
并用
替换此代码 self.arrTypes = nil;
解决了这个问题。