2013-06-01 53 views
1

任何想法如何讓此警告消失。代碼運行良好,我只是不喜歡我的項目中的警告。我從來沒有遇到過這個警告,所以我正在從我認爲的一座痣山上爬出一座山。拳擊語法?這是指方括號嗎?嘗試使用Xcode對Objective-C中的舊項目進行現代化時,會顯示此警告。警告:轉換爲拳擊語法要求將'長'轉換爲'int'

for (int i = 0; i <= 6; i++) { 

    [sequence addObject:[NSNumber numberWithInt:random()% 6]]; 

} 

它拋出一個錯誤,指出:

轉換成拳語法要求鑄造「長」到「廉政」

enter image description here

回答

1

「拳擊」是指爲拳C中的新語法表達式,例如

NSNumber *n = @(2*3+4) 

代替

NSNumber *n = [NSNumber numberWithInt:(2*3+4)]; 

(見http://clang.llvm.org/docs/ObjectiveCLiterals.html瞭解詳細信息)。

在你的情況,

[NSNumber numberWithInt:random()% 6] 

創建包含int許多對象,但

@(random()% 6) 

將創建一個包含long一些對象,因爲random()被聲明爲

long random(void); 

所以爲了得到愛心TLY相同的行爲變換之前,你會寫

[NSNumber numberWithInt:(int)(random()% 6)] 

,然後將其轉化爲

@((int)(random()% 6)) 

如果你不關心你數對象,其「味道」,然後只是轉換該行 手動

[sequence addObject:@(random()% 6)]; 

但Xcode中不能決定你。

+0

感謝的人,這是非常有道理的。事實上,我自己應該已經意識到了這一點,因爲我正在將線路轉換爲現代化的Objective-C。我對自己沒有任何藉口。好日子?再次感謝。 – I00I

+0

@I00I:不客氣! –