gpt4 book ai didi

iphone - Objective-C 初始化方法的正确语法

转载 作者:IT王子 更新时间:2023-10-29 08:08:12 25 4
gpt4 key购买 nike

为什么当合成的 setter 试图释放未定义的 myArray 对象时,这种公共(public)属性初始化方案不会有失败的风险?或者属性对象是否自动初始化为 nil 而我根本不需要这样做?

@interface myClass : NSObject {
NSArray* myArray;
}
@property (nonatomic, retain) NSArray* myArray;
@end

@implementation myClass
@synthesize myArray;
-(id)init {
if ( self = [super init] ) {
self.myArray = nil;
}
return self;
}

...

最佳答案

Objective-C 中的对象实例变量默认初始化为nil。此外,允许消息传递 nil(不同于在函数调用语言(如 Java、C# 或 C++)中调用 null 上的方法)。一个消息给nil的结果是nil,这个调用[nil release];只是nil,不是一个异常(exception)。

附带说明一下,最好在 -init-dealloc 方法中直接分配/调用实例变量:

-(id)init {
if ( self = [super init] ) {
myArray = nil;
}
return self;
}

- (void)dealloc {
[myArray release];
[super dealloc];
}

关于iphone - Objective-C 初始化方法的正确语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4165872/

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