我读过在和对象的“init”方法中使用 self.ivar = (convenience method) 是不好的,因为这会与继承相混淆。
但是,如果您知道您不会对您的对象进行子类化,那么可以使用 self 关键字赋值吗?
i.e. self.iVar = [Object objectConvenienceMethod];
我问的原因是这个。我用自己的 init 方法创建了一个新对象,并在该方法中执行各种初始分配。由于我不使用 self 关键字,我将它们直接分配给 iVar,因此使用 alloc 方法而不是便捷方法。IE
iVar = [[Object alloc] init];
或者,如果我使用方便的方法,我会保留它。IE
iVar = [[Object convenienceMethod]retain]
但是...当我使用内存泄漏工具运行我的程序时,所有这些分配都被识别为内存泄漏。
如果我可以使用 self 关键字加上一个方便的方法而不是 alloc-init,那么这将避免这个问题。
如果我选择使用 alloc-init 方法,我应该在哪里发布 iVar?只是在dealloc?
谢谢你的帮助 :)
迈克尔