在Xcode 4中创建一个新的插座时,它会像往常一样输入必要的代码,但它在头文件界面中以_为前缀(但不在属性中):
UINavigationController *_mainNavController;
UIViewController *_rootView;
它也在实现文件中执行此操作:
@synthesize mainNavController = _mainNavController;
@synthesize rootView = _rootView;
虽然我当然可以使用带前缀的_,但这只会让我的代码变得混乱。我做了一件可怕的错事吗?
非常感谢提前。
答案 0 :(得分:2)
我当然可以使用它们 前缀_。
为什么不直接使用您的属性(例如self.mainNavController
)而不是支持ivars?
阅读Apple对using accessor methods所说的内容:
有时可能看起来很单调乏味 迂腐,但如果你使用访问者 方法一贯的机会 有内存管理问题 大大减少。如果你是 在实例上使用retain和release 您的代码中的变量 几乎肯定是做错了 的事情。
属性封装内存管理代码,从而减少样板。
你不应该使用的唯一地方 用于设置实例的访问器方法 变量在
init
方法中dealloc
。
此外,使用_
为支持ivars添加前缀的约定会阻止您直接错误地访问支持ivars(例如,无法保留对象)。