在Xcode 4中创建连接前缀名称_

时间:2011-07-04 19:27:54

标签: objective-c xcode xcode4 iboutlet

在Xcode 4中创建一个新的插座时,它会像往常一样输入必要的代码,但它在头文件界面中以_为前缀(但不在属性中):

UINavigationController *_mainNavController;
UIViewController *_rootView;

它也在实现文件中执行此操作:

@synthesize mainNavController = _mainNavController;
@synthesize rootView = _rootView;

虽然我当然可以使用带前缀的_,但这只会让我的代码变得混乱。我做了一件可怕的错事吗?

非常感谢提前。

1 个答案:

答案 0 :(得分:2)

  

我当然可以使用它们   前缀_。

为什么不直接使用您的属性(例如self.mainNavController)而不是支持ivars?

阅读Apple对using accessor methods所说的内容:

  

有时可能看起来很单调乏味   迂腐,但如果你使用访问者   方法一贯的机会   有内存管理问题   大大减少。如果你是   在实例上使用retain和release   您的代码中的变量   几乎肯定是做错了   的事情。

属性封装内存管理代码,从而减少样板。

  

你不应该使用的唯一地方   用于设置实例的访问器方法   变量在init方法中   dealloc

此外,使用_为支持ivars添加前缀的约定会阻止您直接错误地访问支持ivars(例如,无法保留对象)。