首先我要做的
@property (retain) aMember;
然后在实现文件中我要做
@synthesize aMember;
然后在 dealloc 中,我必须做
self.aMember= nil; (or [aMember release])
这是写本质上相同的内容的 3 倍
有什么办法可以加快速度吗?
我的意思是我可以从 IB 中拖放控件,xcode 会自动生成这些代码,为什么我不能为更普通的代码这样做?
最佳答案
作为我的日常工作来自 C# 和托管语言的人,我完全同意你质疑这 3 个步骤的过程。事实上,在 MS Visual Studio 中使用 C# 创建属性几乎是一件非常容易的事情,但我离题了。
即使您必须编写这 3 行代码,但在幕后还有大量工作在进行。
您对 @property 的声明告诉 objective-c 一些重要的属性(原子的、非原子的、保留的、复制的等等),当您的类的用户设置您的属性时如何处理它。当您考虑这一点时,这些属性(无需编写任何代码)是;帮助您创建线程安全的代码,处理对对象的引用,这样您就不必担心它们在您身上消失,或者复制值以便您拥有自己的对象副本。 @property 也很重要,因为它是在头文件中声明的(通常)。这让其他开发人员了解您的类的属性,并提供一些小提示,说明他们传递给这些属性的对象在类的生命周期中将如何处理。
@synthesize 还通过为该属性创建 getter 和 setter 来做大量工作,它们还为您处理各种内存管理。您无需担心释放旧引用并正确引用新对象。仅此一项对我来说就是一个很棒的功能,尤其是当您是 objective-c 的新手时,很容易忘记动不动就处理内存管理。 @synthesize 只是为您做这件事,您不必自己编写所有获取和设置代码。
dealloc 调用只是在非内存管理环境中的生活。虽然它增加了额外的步骤,但我很欣赏显式内存管理在手机等受限环境中带来的好处。
因此,所有 3 个步骤都是必需的,它们各不相同,当您考虑它时,实际上在幕后为您做了很多工作。
关于objective-c - 在 Objective C 中添加成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5884765/