gpt4 book ai didi

ios - 对象初始化风格

转载 作者:行者123 更新时间:2023-11-29 10:56:24 25 4
gpt4 key购买 nike

<分区>

假设我的类有以下 ivars/属性:

@property (nonatomic, copy)   NSString *itemName;
@property (nonatomic, copy) NSString *serialNumber;
@property (nonatomic) int valueInDollars;
@property NSDate *dateCreated;

1) 初始化此类的 ivars 的一种方法是这样的:

// Designated initializer of this class 
-(id) initWithItemName: (NSString*) name
valueInDollars:(int)value
serialNumber:(NSString *)sNumber
{

// Call the superclass's designated initializer
self = [super init];

if(self)
{
// Init properties
self.itemName = name;
self.serialNumber = sNumber;
self.valueInDollars = value;
dateCreated = [[NSDate alloc] init];
}

// Return the address of the newly initialized object
return self;
}

2)我想初始化这个类的另一种方法是写:

-(id) init
{
self = [super init];

if(self)
{
// basically do nothing
}

return self;

}

然后将其留给将要使用该类的用户根据需要进行初始化,例如,

MyClass *object = [[MyClass alloc] init];

object.dateCreated = [[NSDate alloc] init];
[object.dateCreated someMethod];
object.itemName = "Hello";
object.someProperty = [[SomeClass alloc] init];

我认为上面的事情是某些属性(如上所述)必须先调用 alloc/init 才能使用,不是吗?如果用户忘记这样做,那么最多应用程序将无法按预期运行,对吧? (它不会崩溃,因为我们可以向 nil 发送消息)。我在这里写的似乎是这种初始化方式的唯一问题。你怎么看?

附言。此处也允许:http://developer.apple.com/library/ios/#documentation/general/conceptual/CocoaEncyclopedia/Initialization/Initialization.html

页数。假设使用 ARC。

感谢许多回复,但基本上我感兴趣的是解决方案 2 可能存在的问题是什么?

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