gpt4 book ai didi

objective-c - 在 Objective-C 中定义实例变量

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

随着 Objective-C 的发展(我专门将它与 xcode/ios 一起用于 iPhone/iPad 开发),似乎有许多不同的方法可以布局类实例变量。是否有一种已成为共识的“最佳实践”方式? (我意识到 Apple 演示/示例代码在风格方面无处不在)

特别是处理私有(private)变量的想法。这里有一些我见过的管理类实例变量的方法(为简洁起见,我省略了接口(interface)/实现)——我什至没有包括使用下划线命名的合成属性。

.h

@property (nonatomic, strong) NSString *aString;

.m

@synthesize aString;

- (void)aMethod {
aString = @"Access directly, but if I don't have custom getter/setters and am using ARC, do I care?";
self.aString = @"Access through self";
}

或者这个:

.h

@property (readonly) NSString *aString;

.m

@property (nonatomic, strong) NSString *aString;
...
@synthesize aString;

或者这个:

.m

@interface aClass {
NSString *aPrivateString;
}

- (void)aMethod {
aPrivateString = @"Now I have to access directly, but is this atomic/nonatomic?";
}

我不希望这个问题变成一个风格论证,但在我看来应该有一个“如果你不做特定或复杂或奇怪的事情,使用这个方法来定义你的类变量”的标准.

最佳答案

我更喜欢对公共(public)和私有(private) ivars/属性使用以下约定:

.h

@property (nonatomic, strong) NSString *publicString;

.m

@implemention aClass 
{
NSNumber *_privateNumber;
}
@synthesize publicString = _publicString;

这样,以 _ 开头的所有内容都是一个 ivar(_publicString 是该属性的基础 ivar,这可以防止我在想使用 self.publicString 时使用 publicString)。

关于objective-c - 在 Objective-C 中定义实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11386096/

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