2010-07-27 261 views
0

我是新的目標C爲iPhone。自定義類=自定義+分配,自定義+初始化

我寫了一個自定義類,那麼,我應該寫我自己的+ alloc,+ init方法嗎? 我相信:+ alloc只會調用[thing alloc];並且+ init會執行如下操作:[thing setValue:X];

是否存在「默認」+ alloc和+ init方法? 如果是的話,我應該等待默認+ alloc和+初始化?比方說,我有一個的NSMutableDictionary * 即

@interface class1 : NSObject { 

    NSString *test; 
    NSMutableDictionary *map; 
} 

感謝

回答

5

您通常不需要編寫自己的+ alloc方法。

對於你的榜樣,你可能有一個看起來像一個-init:

- (id)init { 
    self = [super init]; 
    if (self) { 
     map = [[NSMutableDictionary dictionary] retain]; 
    } 
    return self; 
} 

請注意,您首先調用父類的-init,並檢查它的工作,初始化自己的變量之前。

+0

太好了,謝謝你的回答 – jhon 2010-07-27 21:57:31

2

你應該NEVER覆蓋alloc

至於init,這是一個實例方法,順便說一句,,這將是在那裏你可能要設置的變量的地方。

+0

我現在讀了幾次。但是,我想知道,是語言還是框架的屬性(哈哈,看看我做了什麼?* g *)? 換句話說,如果我不從NSObject派生我的類,並且不告訴編譯器使用Foundation,那麼@synthesize仍然可以工作嗎? – 2013-12-06 06:08:15