iphone - 指针和引用

标签 iphone objective-c ios

我有一个名为 Region 的服装类,我正在使用这段代码来初始化 region 变量,这怎么可能在这段代码的末尾 myAppDelegate.provisoryRegion 不是 nil 而 region 是 nil??? myAppDelegate.provisoryRegion 不是通过引用区域传递的吗??? 我 100% 确定这段代码末尾的区域为 nil。

Region *region=myAppDelegate.provisoryRegion;
if (!myAppDelegate.provisoryRegion) {
    myAppDelegate.provisoryRegion=[[Region alloc]init];
}
if (!region){ NSLog(@"region is nil");
}  

最佳答案

是的。它必须是零。 因为你换了对象!

当执行 myAppDelegate.provisoryRegion=[[Region alloc]init]; myAppDelegate.provisoryRegion 指向一个新对象(堆上的一个新地址)。

*region跟随到新地址!

所以*region仍然指向NULL地址。

但为什么要在第 1 行复制指针? 为什么不总是使用 myAppDelegate.provisoryRegion*regionmyAppDelegate.provisoryRegion

的未链接别名

只需在示例虚拟代码的末尾执行并删除第 1 行:

if (!myAppDelegate.provisoryRegion){ NSLog(@"region is nil");
}  

还有……

myAppDelegate.provisoryRegion=[[Region alloc]init];

看起来像是内存泄漏(如果您的@property 设置为保留)。

修复:

myAppDelegate.provisoryRegion=[[[Region alloc] init] autorelease];

关于iphone - 指针和引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10071963/

相关文章:

javascript - 来自 Web 应用程序的 iOS 通知

iphone - IOS相当于Android的Paint.breakText()

iphone - 用于检测电话号码和超链接的 UITextView 设置

iphone - 如何在应用程序初始化之前获取 GPS 位置?

iphone - 如何将 UIView 拖入表头

ios - 出现 View 时在表中加载新数据

iphone - 检查 NSNumber 是否为空

iOS图像处理管道,GPUImage与核心图像库相比是否仍然强大?

ios - 为什么 XCode 会抛出重复的符号错误?

ios - Swift:从 EKEventStore 获取到 tableView 数据后对 EKEvents 进行日期排序