2013-01-23 49 views
2

我已經使用Objective C了好幾年了,但是我不知道@ sign可以像這樣使用(for循環中的第6行):這個目標中的「at sign」意味着什麼C代碼

- (void)encodeWithCoder:(NSCoder *)coder 
{ 
    [coder encodeInteger:mti forKey:@"mti"]; 

    NSMutableArray *arr = [NSMutableArray arrayWithCapacity:N]; 
    for (int i = 0; i < N; i++) 
     [arr addObject:@(mt[i])]; 
    [coder encodeObject:arr forKey:@"mt"]; 
} 

這是什麼意思?令人驚訝的是我可以刪除它,編譯器不會抱怨,代碼看起來像工作正常?!

這是MTRandom https://github.com/preble/MTRandom/blob/master/MTRandom/MTRandom.m#L115

+2

它是一個新的符號 - 創建一個NSNumber。也有類似的符號來創建NSArrays和NSDictionaries。 –

+1

您現在也可以使用'[]'來索引NSArray或在NSDictionary中查找對象。 –

+0

這裏有一些文檔:http://clang.llvm.org/docs/ObjectiveCLiterals.html – Alladinian

回答

3

在此上下文中,操作者@將C數值(int,long,float,double等)轉換爲NSNumber的實例。它最常用於數字文字(例如@ 3.5),但也適用於您的示例中的表達式。

Xcode 4.4引入了對Objective-C語言的增強。

1

的一部分,它是拳擊值的新語法,用更少的打字。假設mt[i]是數字類型,則@(mt[i])將其放入NSNumber對象中。

1

這是新的客觀-C它把基本整數成一個NSNumber,也有等價物NSArrays @(..)和的NSDictionary @ {...}

相關問題