0

在 Xcode 4 中创建一个新的 outlet 时,它会像往常一样输入必要的代码,但它会在头文件接口中添加一个 _ 前缀(但不在属性中):

UINavigationController *_mainNavController;
UIViewController *_rootView;

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

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

虽然我当然可以将它们与前缀 _ 一起使用,但这只会让我的代码变得混乱。我做错了什么可怕的事情吗?

提前谢谢了。

4

1 回答 1

2

我当然可以将它们与前缀 _ 一起使用。

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

阅读 Apple 关于使用访问器方法的说明:

有时它可能看起来乏味或迂腐,但如果您始终使用访问器方法,内存管理出现问题的可能性会大大降低。如果您在整个代码中对实例变量使用保留和释放,则几乎可以肯定您做错了事。

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

唯一不应该使用访问器方法来设置实例变量的地方是init方法和 dealloc.

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

于 2011-07-04T19:45:13.930 回答