对于objective-c中的所有属性,getter是否相同?

Mic*_*ael 3 memory memory-management objective-c ios

这个简单的问题困扰着我.吸气剂是否相同

@property (nonatomic, retain) NSString *name
@property (nonatomic, copy) NSString *name 

- (NSString*) name{
    return name;    
}
Run Code Online (Sandbox Code Playgroud)

Joe*_*Joe 7

根据文件

但是,属性声明提供了有关如何实现访问器方法的其他信息(如"属性声明属性"中所述).

getter和setter行为都是由属性声明定义的.在您的示例中,由于它已被定义,nonatomic但是如果nonatomic从声明中遗漏了它,那么它将被实现类似于此

- (NSString*) name{
    [_internal lock]; // lock using an object-level lock
    id result = [[name retain] autorelease];
    [_internal unlock];
    return result;
}
Run Code Online (Sandbox Code Playgroud)

这当然只有在您使用@synthesize和不覆盖或更改getter和setter方法时才会出现.