我从过去的1-2个月开始为iPhone开发并且一直用于IBOutlet我使用以下方法来声明任何属性:
在.h文件中:
@interface ....
{
controlType varName;
}
@property() IBOutlet controlType varName;
在.m文件中:
位于顶部 -
@synthesize varName;
in delloc method - [varName release];
虽然这种方法很好,但只需要花几分钟时间宣布财产就不是很好。
是否有用于声明属性,IBOutlets,IBActions或基本数据变量的自动过程。
我希望这个场景应该有一些自动方法,因为这是一个非常基本的过程。
谢谢大家。
答案 0 :(得分:8)
另一个没有多少人知道的是你可以从Interface Builder拖到你的头文件来创建IBActions或IBOutlets。
注意:打开助理编辑器,重点关注IB内的XIB。
如果以这种方式创建IBOutlets,Xcode会自动添加属性,合成它,在viewDidUnload中将其设置为nil并在dealloc中释放它。
您只需将IB对象拖动到头文件,就像在视图对象和文件所有者之间创建连接时一样(下面的屏幕截图)。
答案 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脚本,用于自动化声明属性的乏味。