XCode iPhone自动属性,合成和delloc

时间:2011-03-22 06:22:56

标签: iphone xcode refactoring

我从过去的1-2个月开始为iPhone开发并且一直用于IBOutlet我使用以下方法来声明任何属性:

在.h文件中:

@interface ....
{
     controlType varName;
}

@property() IBOutlet controlType varName;

在.m文件中:

位于顶部 -

@synthesize varName;

in delloc method - [varName release];

虽然这种方法很好,但只需要花几分钟时间宣布财产就不是很好。

是否有用于声明属性,IBOutlets,IBActions或基本数据变量的自动过程。

我希望这个场景应该有一些自动方法,因为这是一个非常基本的过程。

谢谢大家。

5 个答案:

答案 0 :(得分:8)

另一个没有多少人知道的是你可以从Interface Builder拖到你的头文件来创建IBActions或IBOutlets。

注意:打开助理编辑器,重点关注IB内的XIB。

如果以这种方式创建IBOutlets,Xcode会自动添加属性,合成它,在viewDidUnload中将其设置为nil并在dealloc中释放它。

您只需将IB对象拖动到头文件,就像在视图对象和文件所有者之间创建连接时一样(下面的屏幕截图)。 enter image description here

答案 1 :(得分:4)

事实上,是的!

您不再需要声明实际的iVar。

简而言之,只需省略这一部分:controlType varName;

目前,您仍然需要明确“合成”。

(据我所知,未来他们可能会自动化。但是现在你必须“合成”以创建setter和getter。)

你仍然需要释放内存 - 真的没办法自动化,因为内存处理是“真正的人工编程。”

对于任何新的密友阅读,不要忘记“自我”。使用财产时的一部分。

另外请注意,XCode4甚至还有一个新的自动设备。 只需从界面构建器拖动到.h文件,它就会为您完成所有操作 - 试试吧!


在回答您的补充问题时:IBOutlet并非特别需要成为财产 - 您可以使用普通的廉价iVar。另一方面,如果您愿意,可以使用房产。此外:你甚至可以使用新的技巧(2011),不用打扰声明ivar,只需使用属性声明,然后在那里推送IBOutlet!

答案 2 :(得分:2)

有一个很棒的工具可以加快整个过程:accessorizer

你写controlType varName;选择它并按下一些按钮,配置器将为你创建属性,init,dealloc,viewDidUnload等等。您只需将代码粘贴到项目中即可。

试试吧,有一个演示版。

答案 3 :(得分:0)

您可以通过更改属性声明来保存自己必须释放对象。如果您使用:

@property (assign) IBOutlet controlType varName;

保留不会在您的视图上调用,因此您不必在以后发布它。这通常是安全的,因为在将视图添加到父级时会保留视图。如果您出于某种原因从父母那里删除了视图,那么您将不得不保留它们。

答案 4 :(得分:0)

Here's一个xcode脚本,用于自动化声明属性的乏味。