Delegate似乎自动设置为nil

时间:2011-04-28 02:47:53

标签: iphone objective-c ios macos

我正在做一个助手班。这个帮助器类包含一个我将与之交互的NSObject类和一个执行其他操作的UIViewController。

以下是我的app委托或我分配NSObject类的地方:

MyObjectClass *class = [[MyObjectClass alloc] init];
[class setDelegate:self];

现在,这个代表是我创建的代码:

@protocol MyDelegate
-(void) someCall;
@end
@interface MyHelperClass : NSObject {
    id <MyDelegate> delegate;


}
@property (retain, nonatomic) id <MyDelegate> delegate;

所以这很有效。但这是问题所在。如果我分配我的帮助程序类并将其委托设置为视图控制器或其他东西,然后调用我的一个方法打开我的帮助器视图控制器委托停止工作。在调试之后,似乎它有一些内存地址,直到我弹出另一个视图控制器,当我返回它时,委托的内存地址是0x0。

我的问题是这怎么可能发生?我是否需要与我的代表做一些特别的事情才能阻止它发布? (我不会在任何地方发布它)我需要保留它吗? 即使我打开viewcontroller,如何继续使用它,如何保持分配?

提前致谢!

1 个答案:

答案 0 :(得分:0)

委托的内存地址是0x0表示它从未被分配,而不是它已被释放。如果它被释放,它将不再是一个有效的地址,但它将与它发布之前的地址相同。