0

I'm currently working on an iOs application, and there is this one thing that is such a pain in the... well, a pain anyway : I always have to check the documentation to know wether an object property is retained or not (for instance, the setDelegate of the UITextField assigns the delegate and doesn't retain it, whereas the setFont function retains... https://developer.apple.com/library/ios/#documentation/uikit/reference/UITextField_Class/Reference/UITextField.html)

It's... a pain. Is there a way to know such a thing directly in Xcode ?

Thanks in advance

4

3 回答 3

2

委托是一种特殊情况,因为您设置为委托的对象通常是一个生命周期超过或等于其委托对象的对象(即,视图控制器将是文本字段的委托)。由于这种设计模式委托被分配,而不是保留,以避免保留周期。如果您正在创建一个新对象以充当其他对象的委托,那么您将不得不保留它,但这样做并不完全正确。

对于其余的情况,我真的不明白你的问题是什么,或者你为什么要检查文档。您不需要关心框架对象对其属性的保留或其他方式。您只需要关心您在自己的代码中所做的保留和释放。

您是否有一个 UIKit 对象中的非委托属性示例,您必须保留自己,因为 UIKit 对象没有保留它?

于 2012-02-06T14:40:40.567 回答
0

我是 Objective C 的新手。但我认为你并不需要知道。您只需传递该属性,由类(在本例中为 UITextField)决定是否保留它。通过它后,您不必保留它,除非您需要它来做其他事情。

此外,尝试切换到 ARC,对于初学者来说少了很多麻烦。

于 2012-02-06T13:20:35.983 回答
0

简单的答案:切换到仅支持 iOS5 并使用 ARC。你(大部分)不需要担心这种事情。

但是,实际上,无论如何您都不需要这样的工具。约定非常简单。

  • 如果你分配、保留或复制某些东西,你需要在某个时候释放它
  • 否则你不

在实践中,代表们也不例外。为什么?好吧,委托必须至少与带有委托的对象一样长。因此,与您的 setFont: 示例不同,您不太可能这样做alloc; delegate = ...; release

于 2012-02-06T13:22:24.313 回答