2011-08-24 81 views
2

我有以下幾點:存儲和訪問靜態的NSArray

@implementation DataSource 
+ (NSArray *)someData 
{ 
    static NSArray *data = nil; 
    if (!data) { 
    data = [[NSArray arrayWithObjects:..., nil] retain]; 
    } 
    return data; 
} 
@end 

是否有訪問從類是自我類方法的方法嗎?

回答

2
NSArray *array = [DataSource someData]; 
0

是的。在像someData這樣的類方法中,您可以調用另一個類方法,如

[self anotherClassMethod]. 

這裏的自我指的是類。

0

一個靜態方法可以用類名來調用。上述靜態方法的返回類型NSArray的,所以我們可以在任何地方使用

NSArray *Arr=[DataSource someData]; 
0

在其他類的方法,你可以把它作爲[self someData]。從類的實例中,你可以稱它爲[[self class] someData](這具有很好的屬性,子類可以覆蓋它,並且它們的實現將自動適當地使用)。從課外,你可以稱之爲[DataSource someData]。如果這實際上意味着某些Cocoa或Cocoa Touch類(如NS/UITableView)的數據源,則應該將該類實現爲單例,而不要將類本身作爲數據源,因爲使用作爲數據源的類未經過充分測試,隨着程序的增長,實例變量的缺乏可能會變得非常痛苦。