是否有更快的方法来执行@property,@synthesize并释放类变量?

时间:2011-09-06 01:43:56

标签: iphone objective-c ios ipad

我知道@synthesize已经减少了我编写getter和setter的大量工作。但我经常使用的一个常见程序是这四个步骤,例如

  1. SomeView *abc;
  2. @property(nonatomic,retain)SomeView *abc;
  3. @synthesize abc;
  4. [abc release];
  5. 有人想出我在哪里写SomeView *abc;在.h和步骤2,3,4是自动生成的吗?

4 个答案:

答案 0 :(得分:5)

跳过第一步,没有必要,@synthesize将创建ivar。

答案 1 :(得分:4)

如果它是IBOutlet,Xcode将在您使用IB创建变量时为您编写所有代码。您只需将要在界面编辑器中引用的对象拖动到头文件中要进行属性声明的位置,填写表单,然后单击“确定”。

正如其他人所提到的那样,你可以跳过声明支持ivar,转而让@synthesize为你生成它。

您可以使用适当的编译器标志跳过{{​​1}}。在网上搜索“默认@synthesize”。

跳过@synthesize的一种方法是使用Obj-C关联对象API将对象悬挂在主对象之外。保留关联对象将在与其关联的对象被释放时释放。

然后是自动引用计数(ARC),它可以更清晰,更明确地消除-dealloc

答案 2 :(得分:1)

这不是很多帮助,但我做的一件事就是将dealloc移到实现的顶端,先于其他方法。 @synthesize语句就在它之上,所以你可以经常放入@synthesize和release,而不必滚动。在编码时,这不是一个真正节省大量时间,但它确实可以帮助您保持两个部分同步,这在调试时节省了时间。

答案 3 :(得分:1)

希望这不是一件坏事。在某些情况下,它已经为你完成了:

在Xcode 4的Interface Builder中,当你将一个元素拖到它的文件所有者的.h文件上时,它会为你做这个1-4,甚至在viewDidUnload为你设置为nil。

  1. 现代运行时不需要。
  2. 仍然需要这样做。
  3. 在WWDC10(113和144)会议上讨论了废除这一点,但是发行说明说这还没有发生。
  4. 使用ARC,您不需要它。
  5. 这是你不需要做的4个中的2个,以及他们正在努力去除的4个。所以它还不是全部 - 但它变得越来越容易。