2012-07-23 18 views

回答

1
NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"2.0", @"v", @"1", @"appid", @"1", @"zh-Hans", @"lang", nil]; 

這創建了一個不變的字典,其內容在編譯時是固定的。

您可以使用相同的init方法來填充一個新的字典在運行時:

id object1 = ...; 
... 
NSString *key1 = ...; 
... 

NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:object1, key1, object2, key2, object3, key3, nil]; 
6

開始在鐺3.2,有literal container syntax可供選擇:

NSDictionary * d = @{ 
    @"APP_INFO" : 
    @{ 
     @"v" : @"2.0", 
     @"appid" : @"1", 
     @"lang" : @"zh-Hans", 
}}; 

這將創建一個普通的不可變NSDictionary例如,就好像您使用了alloc/initWithObjects:forKeys:或其他任何方法;它只是很好的語法糖。有傳言說,蘋果也會很快將它加入到他們的編譯器中。

+0

不是一個傳言,它清楚地表明在你鏈接到的頁面上:「蘋果編譯器發行版的用戶可以使用這些功能從Apple LLVM Compiler 4.0開始」^^ – borrrden 2012-07-23 03:49:16

+0

* Whoooosh *在我頭上,對不起, ^; – borrrden 2012-07-23 03:54:43

+0

雖然是運行時初始化的語法糖,但您仍然無法將其設置爲const或放在頭文件中。只有NSString文字可以做到這一點。 – rickster 2012-07-23 03:58:41

相關問題