我正在制作一个辅助类。这个助手类由一个我将与之交互的 NSObject 类和一个执行其他一些操作的 UIViewController 组成。
这是在我的应用委托(delegate)中或在我分配 NSObject 类的任何地方发生的事情:
MyObjectClass *class = [[MyObjectClass alloc] init];
[class setDelegate:self];
现在,这个委托(delegate)是我这样创建的:
@protocol MyDelegate
-(void) someCall;
@end
@interface MyHelperClass : NSObject {
id <MyDelegate> delegate;
}
@property (retain, nonatomic) id <MyDelegate> delegate;
所以这很好用。但这就是问题所在。如果我分配我的助手类并将其委托(delegate)给 View Controller 或其他东西,然后调用我的方法之一打开我的助手 View Controller ,委托(delegate)将停止工作。调试后它似乎有一些内存地址,直到我弹出另一个 View Controller 并且当我返回它时,委托(delegate)的内存地址是 0x0。
我的问题是这怎么会发生?我是否需要对我的代表做一些特别的事情来阻止它释放? (我自己不会在任何地方发布)我需要保留它吗? 如何在我打开 viewcontroller 时保持它的分配状态以便我可以继续使用它?
提前致谢!
最佳答案
delegate的内存地址为0x0表示它从未被分配,并不是说它被释放了。如果它被释放,它将不再是一个有效地址,但它会是它被释放之前的地址。
关于iphone - 代表似乎自动设置为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5813037/