Mat*_* S. 1 cocoa nsarray ghosts-in-the-machine
我有多个阵列,但是,他们没有保留他们的数据用于另一种方法.
这是我如何设置(简化)
.h
NSArray *array;
@property (nonatomic, copy) NSArray *array;
-(void)someMethod:(NSArray*)someArray;
-(void)heresNewMethod;
Run Code Online (Sandbox Code Playgroud)
.m
-(void)someMethod:(NSArray*)someArray
{
array = [someArray copy];
}
-(void)heresNewMethod //gets called by method not shown
{
NSLog(@"%@", array);
}
Run Code Online (Sandbox Code Playgroud)
发生了两件事之一:
someMethod:消息,传递nil(可能没有意义).要nil返回的消息nil,因此您将nil- 作为copy消息的结果 - 分配给array实例变量.即使您之前已经存储了指向数组的指针,您也可以nil在对此someMethod:消息的响应中替换它.someMethod:消息.由于实例变量已初始化为nil,并且您从未在array实例变量中添加任何不同的内容,因此它仍然包含nil.在代码中添加更多NSLog语句以测试第一个理论.事实是一个或另一个,因此确认第一个理论反驳第二个理论,反之亦然.