我正在通过将XIB编辑器中的UI组件拖到视图控制器的头文件中来创建IBOutlets。我在花括号中拖放,以便将它们简单地视为实例变量而不是属性。但是,尽管如此,我注意到我的viewDidUnload和dealloc方法中的release语句。这不是不必要的吗?就像我说的,这些不是我正在创造的属性。为什么生成的代码在没有retain,alloc,copy等时释放这些对象?
答案 0 :(得分:1)
我认为原因是你的所有商店都应该保留属性。这样,所有视图子视图(您的按钮等)将保证比视图本身更长寿。我从来没有听说过你的编码方式。通常,您只需键入代码并在.xib中连接您的插座。
答案 1 :(得分:1)
在iOS上,如果声明出口是ivar而不是属性,则您有责任在适当的时间(即-dealloc
和-viewDidUnload
中释放它。您还应该设置他们到后者的nil
。)
这是由于iOS上存在内存管理的怪癖。无论如何,我个人的偏好是避免使用readwrite
属性作为出口,因为恕我直言,它以一种糟糕的方式打破了视图控制器的封装。
答案 2 :(得分:1)