消息发送到deallocated instance ,,, [__ NSArrayI respondsToSelector:]

Moh*_*lah 3 memory-management objective-c ios

我有一个带有NSArray对象userID的实现文件

NSArray *userIDs;
NSInteger friendID;

@implementation TableViewController

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

-(NSString *)getFriendId
{
 return [userIDs objectAtIndex:friendID];
}
.
.
.
@end
Run Code Online (Sandbox Code Playgroud)

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

TableViewController *tableController = [[TableViewController alloc]init];
NSString *fid = [tableController getFriendId];
Run Code Online (Sandbox Code Playgroud)

但我有一个错误说" - [__ NSArrayI respondsToSelector:]:消息发送到解除分配的实例0x20320200"并且编译器指示此行中的错误:

return [userIDs objectAtIndex:friendID];
Run Code Online (Sandbox Code Playgroud)

Ser*_*yol 10

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

这样它就会被添加到自动释放池中,并且保留计数将为0.保留它或者用[[NSArray alloc] init]手动分配它