簡體   English   中英

在 Objective-C 中,是否可以為類變量設置默認值?

[英]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;
}

NSIntegerintlong ,具體取決於架構。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM