我知道@synthesize
已经减少了我编写getter和setter的大量工作。但我经常使用的一个程序是这四个步骤例如
-
SomeView *abc;
-
@property(nonatomic,retain)SomeView *abc;
-
@synthesize abc;
-
[abc release];
有没有人想到我在哪里写SomeView *abc
;在.h
和步骤2,3,4是自动生成的?
跳过第一步,没有必要,@synthesize将创建ivar
如果是IBOutlet
, Xcode会在你使用IB创建变量时为你编写所有的代码,你只需要在界面编辑器中将你想引用的对象拖到头文件中你想要属性声明的位置,填写表格,然后点击OK。
正如其他人提到的,您可以跳过声明支持变量,而让@synthesize
为您生成它。
可以通过使用适当的编译器标志跳过@synthesize
。在网上搜索"default @synthesize"。
跳过-dealloc
的一种方法是使用Obj-C相关的对象API将对象悬挂在主对象上。保留的关联对象将在与其关联的对象被释放时被释放。
然后是自动引用计数(ARC),它更清晰和明确地消除了-dealloc
。
这没有多大帮助,但我做的一件事是将dealloc移到实现的顶部,在其他方法之前。@synthesize语句就在上面,所以你可以放入@synthesize和release而不需要滚动。在编码时,它并不能真正节省时间,但它确实帮助您保持两个部分同步,这在调试时节省了时间。
这并不是一件坏事。在某些情况下,它已经为你完成了:
在Xcode 4的Interface Builder中,当你把一个元素拖到文件所有者的。h文件上时,它会为你做这个1-4,甚至在viewDidUnload
中为你设置它为nil。
- 不需要与现代运行时。
- 仍然需要这样做。
- 在WWDC10(113和144)会议上谈到了这一点,但发行说明说这还没有发生。 使用ARC,你不需要这个。
这是你不需要做的4个中的2个,他们正在努力消除一个。所以,现在还不是全部,但是越来越容易了。