A NSInteger在32位平台上为32位,在64位平台上为64位.是否有一个NSLog总是匹配大小的说明符NSInteger?
建立
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF 打开这让我有些悲伤:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
@autoreleasepool {
NSInteger i = 0;
NSLog(@"%d", i);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
对于32位代码,我需要说明%d符.但是,如果我使用说明%d符,我在编译64位时会收到警告,建议我使用%ld.
如果我使用%ld匹配64位大小,编译32位代码时,我会收到警告,建议我使用%d.
如何一次修复这两个警告?是否有我可以使用的说明符?
这也影响[NSString stringWithFormat:]和[[NSString alloc] initWithFormat:].
我刚刚开始使用OCUnit并发现断言有点麻烦.在JUnit中,我可以编写一个测试来比较下面的数字.这个测试显然会失败,但这显示了一个很好的,简单的断言,我可以写两个数字和我得到的反馈:"预期<2>但是<3>",代码非常少.
替代文字http://i49.tinypic.com/2aeo8kn.png
我到目前为止尝试的是XCode:
替代文字http://i48.tinypic.com/25kj1x2.png
哪个有效,但不如JUnit那么优雅.你知道它是否存在断言宏alàJUnitfor XCode(OCUnit)?此外,是否可以在XCode中获得红色/绿色条?
objective-c ×2
32bit-64bit ×1
cocoa ×1
nsinteger ×1
nslog ×1
ocunit ×1
unit-testing ×1
xcode ×1