1

我有多个数组,但是,它们没有保留它们的数据以用于另一种方法。

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

.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);
 }
4

3 回答 3

7

发生了两件事之一:

  • 您向对象发送了一条someMethod:消息,传递nil(可能没有意义)。要nil返回的消息nil,因此您将(作为消息nil的结果)分配给实例变量。即使您之前已经在其中存储了指向数组的指针,您在回复此消息时也将其替换为。copyarraynilsomeMethod:
  • 您从未向对象发送someMethod:消息。由于实例变量被初始化为nil,并且您从未在array实例变量中放置任何不同的内容,因此它仍然包含nil.

在你的代码中添加更多的 NSLog 语句来测试第一个理论。事实要么是一个,要么是另一个,所以确认第一个理论会反驳第二个理论,反之亦然。

于 2010-06-19T02:48:07.570 回答
0

array除了每次调用时都会泄漏任何内容这一事实之外someMethod:,该代码应该可以工作。你看到了什么问题?

于 2010-06-18T21:21:36.210 回答
0

唯一的答案是您提供的代码不是您使用的代码,差异至关重要。我的意思是,您声明了一个随后不使用的属性,并且不清楚您是否正确定义了访问器,或者数组是否也是一个本地的,它会影响您的属性,或者什么。

请发布您的真实代码。

于 2010-06-19T03:15:33.007 回答