iphone - 代表似乎自动设置为零

标签 iphone objective-c ios macos

我正在制作一个辅助类。这个助手类由一个我将与之交互的 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/

相关文章:

iphone - 如何在 iPhone 中缓存整个网页?

ios - 在分段控件之间切换时隐藏线条

ios - UITableViewCell 标签显示有小的向上滑动动画

ios - [GADSlot 状态] : unrecognized selector sent to instance in iphone

ios - 在 Flutter 中打开原生 UIViewController

ios - 套接字 IO 日志记录 : Got Message 3 in Swift/iOS

iphone - 以编程方式为 UITableViewController 设置 UIActivityIndi​​catorView

iphone - Interface Builder 背景颜色 => 透明颜色?

html - CSS 背景图像在 iPad 和 iPhone 上无法正确调整大小。

iphone - Pago 支付网关集成