Iphone 在Xcode 4中添加插座

Iphone 在Xcode 4中添加插座,iphone,ios,memory-management,xcode4,Iphone,Ios,Memory Management,Xcode4,我正在创建IBOutlets,方法是将一个UI组件从XIB编辑器拖动到视图控制器的头文件中。我在花括号中拖放,这样它们就被简单地当作实例变量,而不是属性。然而,尽管如此,我还是注意到viewDidUnload和dealloc方法中的发布语句。这不是没有必要吗?就像我说的,这些不是我正在创建的属性。当没有retain、alloc、copy等时,为什么要生成代码来释放这些对象 我认为原因是你们所有的门店都应该保留。这样,所有视图子视图(您的按钮等)将保证比视图本身寿命更长。我从来没有听说过像你这样编

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

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

我认为原因是您的所有插座都应保留。这样,所有视图子视图(您的按钮等)将保证比视图本身寿命更长。我从来没有听说过像你这样编码。通常,您只需在iOS上的.xib.

中键入代码并连接插座,如果插座被声明为ivar而不是属性,则您负责在适当的时间释放它(即在
-dealoc
-viewDidUnload
中。在后者中,您还应将它们设置为
nil


这是由于iOS上内存管理的一个怪癖造成的。无论如何,我个人的偏好是避免对插座使用
readwrite
属性,因为它以一种不好的方式破坏了视图控制器的封装。

在iOS上,如果插座被声明为ivar而不是属性,您有责任在适当的时间释放它(即在
-dealoc
-viewDidUnload
中。在后者中,还应将它们设置为
nil
。)


这是由于iOS上内存管理的一个怪癖造成的。不管怎样,我个人的偏好是避免为outlet使用
readwrite
属性,因为它以一种不好的方式破坏了视图控制器的封装。

你不需要将它们设置为属性,Objective-C 2.0之前没有包含属性,属性只是synta乳酸糖

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


查看部分

您不需要将它们设置为属性,Objective-C 2.0之前没有包含属性,属性只是语法上的糖分

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


查看部分

真的吗?我之前也这么想,但后来我看到了这本书:Bill Dudney和Chris Adamson的iPhone SDK开发。在大多数示例中,他们都没有声明IBOutlets为属性!!查看苹果文档。在这页的一半,滚动到它谈论的是outlets。你也可以在这个页面上查看e他们讨论将视图控制器设置为属性,以确保其寿命与应用程序一样长。子视图也是如此。您不希望在屏幕上处理视图?我之前也这么想,但后来我看到了这本书:Bill Dudney和Chris Adamson的iPhone SDK开发。在大多数情况下例如,他们没有将IBOutlets声明为属性!!请查看Apple文档。在本页的一半处滚动,其中讨论了outlets。您也可以在本页上查看,其中他们讨论了将视图控制器设置为属性,以确保其与应用程序的使用寿命相同。子视图也是如此。您不需要我不明白的是,如果我没有分配、保留或复制一个插座,为什么我应该释放它?通常你不会。这是一个罕见的例外。你的
释放
平衡了Nib解码时所做的
保留
分配
。我不明白的是为什么我应该释放一个插座如果我没有分配、保留或复制它,请退出?通常你不会。这是一个罕见的例外。在Nib解码时,你的
发布
平衡了
保留
分配