gpt4 book ai didi

ios - 生成代码中的前导下划线

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:54:27 25 4
gpt4 key购买 nike

在阅读 apple 生成的模板代码以及文档时,我看到了 _(下划线)和 __(双下划线)。示例是在检查核心数据选项时生成的代码:

@synthesize window = _window;
@synthesize managedObjectContext = __managedObjectContext;
@synthesize managedObjectModel = __managedObjectModel;
@synthesize persistentStoreCoordinator = __persistentStoreCoordinator;

每一个是什么意思?我理解 _ 指的是支持私有(private)变量。 __ 是什么意思?

最佳答案

乍一看,您常常会混淆何时使用 getter/setter 方法以及何时直接访问 ivar。

另一种方法是将 ivar 命名为与属性不同的名称。一种常见的方法是使用下划线作为 ivars 名称的前缀,就像这样 -

@interface RootViewController : UITableViewController 
{
NSDate *_timestamp;
}
@property (nonatomic, retain) NSDate *timestamp;

要连接属性(其名称未更改),sythensize 语句会获得一个额外的选项:

@implementation RootViewController

@synthesize timestamp = _timestamp;

本质上,如果 ObjectiveC 程序员按照此约定(他们应该)声明 ivars 并使用基本语法 @synthesize _window; 那么该属性的用法就变得有些难看:classInstance。 _window = myWindow[classInstance set_window:myWindow]。使用语法 @synthesize window=_window; 允许 Obj-C 程序员利用流行的编程标准(在 ivars 之前带有 _)同时拥有使用 Apple 的属性访问器标准的 classInstance.window = myWindow[classInstance setWindow:myWindow]

关于ios - 生成代码中的前导下划线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8417642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com