当我尝试写作时
NSLog(@"%d", myObject.myId);
其中 myId 为 int
,控制台给出一些高数字,如 70614496。当我使用 @"%@"
时,我收到异常 -[CFNumber respondsToSelector :]: 消息发送到已释放的实例 0x466c910
。
为什么会这样?
这是 myObject 的定义:
@interface myObject : NSObject {
int myId;
NSString *title;
}
@property(nonatomic) int myId;
@property(nonatomic, retain) NSString *title;
@end
@implementation myObject
@synthesize myId, title;
- (void)dealloc {
[title release];
[super dealloc];
}
@end
最佳答案
卡尔在尝试编译您的代码方面做得很好。关于 %@ 格式说明符的另一句话,因为您的问题似乎意味着一些困惑。
当您在 NSLog 格式中使用 %@ 时,您实际上是在发送参数 description消息,并打印结果字符串。如果myId
是一个int而不是NSObject的实例,它不会响应描述消息。使用 %d 表示 int 值,使用 %@ 表示 NSNumber 实例。
关于objective-c - %d 没有正确显示整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1710549/