[英]In Objective-C, is it possible to set default value for a class variable?
有沒有辦法為類的類屬性設置默認值? 就像我們在 Java 中可以做的一樣,在類的構造函數中,例如.-
MyClass(int a, String str){//constructor
this.a = a;
this.str = str;
// I am loking for similar way in Obj-C as follows
this.x = a*5;
this.y = 'nothing';
}
我為什么要尋找:
我有一個大約有 15 個屬性的類。 當我實例化類時,我必須使用一些默認值設置所有這些變量/屬性。 所以這使我的代碼既繁重又復雜。 如果我可以為該類中的那些實例變量設置一些默認值,那必須降低此代碼的復雜性/冗余。
如果你不想指定參數,
- (MyClass *)init {
if (self = [super init]) {
a = 4;
str = @"test";
}
return self;
}
然后,當您執行MyClass *instance = [[MyClass alloc] init]
,它會為 ivars 設置默認值。
但我不明白為什么你發布了帶有參數的構造函數,但你不想使用它們。
寫在init,這是做完全初始化的所有作業。
然后根據需要編寫盡可能多的具有不同參數集的啟動器(但想想看:你真的需要這個還是那個?)。 不,不要讓他們做這項工作。 他們是否讓填寫所有默認值(您沒有提供給消息的那些,這個消息處理實現)並將其全部提供給第一個。
第一個發起者稱為指定發起者。 並且一定不要錯過Multiple Initializers 和 Designated Initializer。 永遠不要忽視指定的!
你好
在類的界面中:
@interface YourClass : NSObject {
NSInteger a;
NSInteger x;
NSString *str;
NSString *y;
}
- (id)initWithInteger:(NSInteger)someInteger string:(NSString *)someString;
@end
然后,在實現中:
- (id)initWithInteger:(NSInteger)someInteger string:(NSString *)someString {
if (self = [super init]) {
a = someInteger;
str = [someString copy];
x = a * 5;
y = [@"nothing" retain];
}
return self;
}
( NSInteger
是int
或long
,具體取決於架構。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.