在其中一个Standford IOS tutorials中,教师使用延迟实例化来创建计算器引擎类的实例。如何在目标c中做懒惰的实例化?
他使用在my former question露出的第二语法:
@synthesize myTextField = _myTextField;
在此语法,吸气myTextField
具有_myTextField
不同的名称,以便它可以测试
if (_myTextField != nil) { ... }
如何做到这一点与经典的第一种语法,因为getter和实例变量的名称是相同的(myTextField
)?
或者只是我们e ARC并忘记您正在设置哪个:) – 2012-03-06 17:16:30
即使使用ARC,也不希望绕过访问者无意中。这打破了KVO以及可能存在于存取器中的任何其他副作用。如果你使用'varName'而不是'self.varName',你会悄悄错过这样的懒惰实例化的副作用。 – 2012-03-06 17:20:52
@ RichardJ.RossIII是使用弧消除了很多内存头痛,但我一般坚持约定,所以你知道你正在访问。同样使用ARC不会改变延迟加载实现,上面的代码适用于ARC和内存管理的应用程序(假设varName被保留) – wattson12 2012-03-06 17:21:07