我有多个数组,但是,它们不会保留数据以供其他方法使用。
这是我的设置方式(简化)
.h
NSArray *array;
@property (nonatomic, copy) NSArray *array;
-(void)someMethod:(NSArray*)someArray;
-(void)heresNewMethod;
.m
-(void)someMethod:(NSArray*)someArray
{
array = [someArray copy];
}
-(void)heresNewMethod //gets called by method not shown
{
NSLog(@"%@", array);
}
最佳答案
发生了以下两件事之一:
- 您向对象发送了一条
someMethod:
消息,传递了nil
(可能无意)。发送到nil
的消息返回nil
,因此您将nil
(作为copy
消息的结果)分配给数组
实例变量。即使您之前在那里存储了指向数组的指针,您也会在对此someMethod:
消息的响应中将其替换为nil
。 - 您从未向对象发送过
someMethod:
消息。由于实例变量被初始化为nil
,并且您从未在array
实例变量中放入任何不同的内容,因此它仍然包含nil
。
在代码中添加更多 NSLog 语句来测试第一个理论。事实要么是其中之一,要么是另一个,因此证实第一个理论就反驳了第二个理论,反之亦然。
关于cocoa - Objective-C/cocoa 丢失数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3073142/