我在我的下面幾行代碼:爲什麼registerDefaults中的setValue會給BOOL YES一個警告?
[registerDefaults setValue:NO forKey:UserDefaultsGameSortAscendingKey];
[registerDefaults setValue:YES forKey:UserDefaultsReminderSortAscendingKey];
爲什麼,我在第二行得到一個警告,而不是第一?
不相容整數指針轉換
兩個UserDefaultsGameSortAscendingKey
和UserDefaultsReminderSortAscendingKey
被定義爲常數:
extern NSString *const UserDefaultsGameSortAscendingKey;
extern NSString *const UserDefaultsReminderSortAscendingKey;
你的代碼是正確的,但它不是演員。說你需要包裝BOOL會更準確。 –
澄清反映在編輯中。然而,我對「鑄造」的定義幾乎與維基百科的定義相符:在計算機科學中,類型轉換,類型轉換和強制指的是以不同方式隱式或顯式地將一種數據類型的實體變爲另一種。 – isaac
至少在C派生語言中,「強制轉換」是指在不實際更改內存中表示的情況下更改某種類型的內容。然而,在這種情況下,你使用'NSNumber'對象包裝BOOL值,並且結果值具有與原始BOOL不同的內存中表示。 –