網頁

2017年9月29日 星期五

"Values of type 'NSUInteger' should not be used as format arguments; add an explicit cast to 'unsigned long' instead"的處理

在XCode中一直出現"Values of type 'NSUInteger' should not be used as format arguments; add an explicit cast to 'unsigned long' instead",參考String Format Specifiers文件中所提使用"lu 或 lx"卻都沒用,後來看到清理iOS工程中的Warnings其中提到

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

在模拟器和真机上,NSInteger是不同的类型定义:
#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
  typedef long NSInteger;
  typedef unsigned long NSUInteger;
#else
  typedef int NSInteger;
  typedef unsigned int NSUInteger;
#endif
在格式化字符串时,使用'%ld'会在真机中报该警告。解决办法:
  • use %zd for signed, %tu for unsigned, and %tx for hex.

(以上出自清理iOS工程中的Warnings

這才將這討人厭的warning去除 @@

參考網址:
清理iOS工程中的Warnings

沒有留言:

張貼留言