当我安装这个新的Xcode时,我在Xcode 5.1 beta 5中收到了一些警告。
类型NSInteger
的值不应用作格式参数;添加显式转换为long
而不是
NSString *time; NSInteger hour; time = [@"" stringByAppendingString:[NSString stringWithFormat:@"%d",hour]];
并告诉我将其替换为@"%02ld"
或@"%ld"
time = [time stringByAppendingString:[NSString stringWithFormat:@"%02ld",(long)minute]];
当我使用Xcode 5.0.2时工作正常。
我们也可以通过Xcode 5.1 beta 5发布应用程序到IOS 7.1 beta,7.1,6.1来测试设备和版本。到App store?
我应该使用Xcode 5.0.2&使用final(非beta)&等待Xcode 5.1的最终版本。
P.S。我想第一次在设备上测试我的应用程序&将第一次在商店发布应用程序..
答案 0 :(得分:1)
您无法使用Xcode的测试版提交到应用商店。您必须使用Xcode 5.0.2构建发布二进制文件。
那就是说,你应该修正那些警告。仅仅因为Xcode 5.0没有警告过你,并不意味着他们永远是对的。
答案 1 :(得分:0)
在编译64位与32位时,这种情况有所不同。
在64位NSInteger中是一个64位值:typedef long NSInteger 在32位NSInteger中是一个32位值:typedef int NSInteger
因此,当编译32位时,%02d就可以了。在编译64位时,编译器需要%02ld来获得更宽的值。解决此问题的方法是使用%02ld并将值转换为long,如第二个代码块中所示。如果使用NSUInteger强制转换为无符号长整数。
您可以在Apple的这些iOS文章中阅读更多相关信息: