cocoa - Objective-C/cocoa 丢失数组值

标签 cocoa nsarray ghosts-in-the-machine

我有多个数组,但是,它们不会保留数据以供其他方法使用。

这是我的设置方式(简化)

.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/

相关文章:

objective-c - 在 OS X 的停靠栏上下文菜单中显示图标?

objective-c - 从另一个类 objective-C 获取数组

ios - 如何从状态为完整的 NSMutableArray 获取最后一个元素?

C - 丢失 pointee 结构值

cocoa - NSTableView 不刷新

c++ - Cocoa 选择器的行为可以用 C++ 重新实现吗?

objective-c - 修复 Cocoa/ObjC 中的内存泄漏

cocoa - NSRuleEditor : Criteria for new row

objective-c - ShareKit - 如何访问 Twitter 用户名