消除Values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead警告


2015-02月份開始蘋果app必須支持arm64了,支持以后會有一個問題,

NSInteger變成64位了,和原來的int (%d)不匹配,會報如下warning,

Values of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead

解決方案:

1,假如number這個值32位足夠了,可以更改數字定義為int 型;

2,強轉型:[NSString stringWithFormat:@"%d", (int)number];

3、32位可能不夠的話:[NSString stringWithFormat:@“%ld", (long)number];

4、[NSString stringWithFormat:@“%@", @(number)];

一勞永逸的辦法:

在如下圖所在的位置的相應的.m文件,雙擊文件, 在其中添加  -Wno-shorten-64-to-32  (這個關鍵在就是讓編譯器忽略 Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32_t' (aka 'int') 警告)


 

 


 

關閉整個工程的這種警告:

工程的target有一個 Other Warning Flags ,在其中添加 -Wno-shorten-64-to-32,再重新編譯,哈哈,整個工程中的這種警告全部消失了!!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM