在Xcode 4中添加Outlets

时间:2011-05-26 21:06:30

标签: iphone ios memory-management xcode4

我正在通过将XIB编辑器中的UI组件拖到视图控制器的头文件中来创建IBOutlets。我在花括号中拖放,以便将它们简单地视为实例变量而不是属性。但是,尽管如此,我注意到我的viewDidUnload和dealloc方法中的release语句。这不是不必要的吗?就像我说的,这些不是我正在创造的属性。为什么生成的代码在没有retain,alloc,copy等时释放这些对象?

3 个答案:

答案 0 :(得分:1)

我认为原因是你的所有商店都应该保留属性。这样,所有视图子视图(您的按钮等)将保证比视图本身更长寿。我从来没有听说过你的编码方式。通常,您只需键入代码并在.xib中连接您的插座。

答案 1 :(得分:1)

在iOS上,如果声明出口是ivar而不是属性,则您有责任在适当的时间(即-dealloc-viewDidUnload中释放它。您还应该设置他们到后者的nil。)

这是由于iOS上存在内存管理的怪癖。无论如何,我个人的偏好是避免使用readwrite属性作为出口,因为恕我直言,它以一种糟糕的方式打破了视图控制器的封装。

答案 2 :(得分:1)

你不需要制作它们的属性,2.0之前的Objective-C不包含属性,属性只是语法糖。

当它们从笔尖中拉出时,它们会被保留。

查看The Nib Object Life Cycle部分