我有两个 Objective-C 类,它们通过方法参数传递变量来相互通信数据。例如,我可能会调用一个将传递变量的方法:
ClassX *x = [[ClassX alloc] init];
[x passThisParameter:i];
变量被方法ClassX
内部成功接收passThisParameter
。我可以通过断点和日志输出来确认这一点:
- (void)passThisParameter:(id)object {
self.classVariable = object;
NSLog(@"Object: %@", self.classVariable); // In the log I can see that classVariable has the same value as object does.
}
但是,当我尝试classVariable
在上述范围之外使用时(例如,在另一种方法中,但在同一个类中)它总是显示为NULL
. 为什么我classVariable
被重置为 NULL?这是我稍后检索变量的方式:
- (void)anotherMethodFromClassX {
NSLog(@"Class Variable: %@", self.classVariable); // This is always NULL even though the variable is never used anywhere else (except when it's set in the method above)
}
我还尝试在我的类定义/标题和实现中以多种方式设置变量:
@property (retain) id classVariable
@property (strong) id classVariable
@property (assign) id classVariable
@property (nonatomic, strong) id classVariable
关于为什么这个 classVariable 被重置为的任何想法NULL
?我想不通,在谷歌上也找不到太多。如果我的一些编程术语不正确,请原谅我。
编辑:我使用的是 ARC,而不是 MRC。
编辑:是否有可能ClassX
在我设置classVariable
它可以重置为之后重新分配和重新初始化NULL
?假设它在 UI 中重新加载...
编辑:这是我的ClassX
和ClassZ
相关的在线代码。