0
我有一個全局字典,其中包含Class
對象和NSString
鍵。我Property
類的每個自定義子類可以使用在init方法中確定類
+ (void)registerPropertyClass:(Class)pclass forNamePrefix:(NSString *)namePrefix
一個Property
與name
和value
初始化的Property
超註冊自己。我現在要做的是根據前綴name
(如果註冊的類匹配)從init方法返回不同的類。
會是這樣的事情是正確的嗎?
- (id)initWithName:(NSString *)name value:(NSString *)value
id instance = self;
NSArray *registeredPrefixes = [kCKPropertyClasses allKeys];
for (NSString *prefix in registeredPrefixes) {
if ([name rangeOfString:prefix].location == 0) {
instance = [[kCKPropertyClasses objectForKey:prefix] alloc];
break;
}
}
self = [instance init];
if (self) {
self.name = name;
self.value = value;
}
return self;
}
更新:忘了提,這個項目使用ARC(所以沒有保留/釋放)
我建議改變循環只獲取類,並將'alloc'移動到與'init'相同的語句。將'alloc'和'init'配對在一起總是最好的。而且由於你使用的是ARC,你可能想用'new'替換'alloc'和'init'對。最後,獲得'allKeys'不是必需的;你可以直接在字典上迭代,並且它會產生它的鍵。 –