objective-c - 释放 iOS 中未使用的属性

标签 objective-c ios oop properties dealloc

我在我的类“ClassA”中合成并声明了此属性

@interface ClassA
    @property (nonatomic, retain) NameFieldCell* nameCell;
@end

我知道规则规定,当使用retain|copy|声明时,应该在我的dealloc方法中释放nameCell属性...

但是,“ClassA”会延迟实例化,有时甚至不使用 nameCell 属性,这意味着我不使用它的 setter 方法,也不访问它,也不显式保留它。

我还应该在我的 dealloc 方法中调用 [nameCell release] 吗?我发现很难理解我应该释放一些甚至没有初始化的东西。而且由于没有初始化,引用计数器为0,释放它没有意义?或者,即使我没有使用它,在实例化“ClassA”时,nameCell 是否会以某种方式自动保留?

最佳答案

在 Objective-C 中,由 alloc 为类分配的内存在分配时被初始化为全位零(然后设置 isa ivar),这会导致 nameCell 的支持 ivar 默认设置为 nil。由于在 Objective-C 中向 nil 发送消息并不是一个错误(该消息只是被忽略),因此您可以随意调用 [nameCell release] 而无需担心 nameCell 是否已设置。

关于objective-c - 释放 iOS 中未使用的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6875650/

相关文章:

javascript - JavaScript 中的虚函数是什么?

objective-c - 当 Cocoa/Obj-C 应用程序中的网络连接发生变化时得到通知

iOS崩溃文件崩溃似乎是 block

ios - 无法添加iOS模拟器

c++ - 如何在外部类中调用内部类的函数?

PHP继承,父函数使用子变量

ios - AVAudioPlayer 音量条件未正确返回

ios - 文本到语音转换

ios - 闭包中的 Inout 参数(Swift)

ios - 让条件在 Firebase Observer 中工作