-3

我将我的 viewcontrollerA 设置为单例。在 viewcontrollerA.h 我有:

@property (nonatomic, assign) NSNumber* showCommentOrCreate;

在 viewcontrollerB.m 我有:

PhotoViewController* sharedSingleton = [PhotoViewController sharedManager];
sharedSingleton.showCommentOrCreate = [NSNumber numberWithInt:2];

在我的 viewcontrollerB.m 中,我有:

 PhotoViewController* sharedSingleton = [PhotoViewController sharedManager];
NSLog(@"num %ld", (long)sharedSingleton.showCommentOrCreate);

问题是,对于我以这种方式设置的任何值 [NSNumber numberWithInt:whole number],我总是得到一个不是我设置的数字的数字:

例如 2013-01-24 19:42:24.936 Splash-it[870:907] num 475536752

有谁知道为什么?

4

2 回答 2

4

因为您正在打印指向NSNumber对象的指针,而不是存储在其中的整数值。

于 2013-01-24T18:49:55.787 回答
1

您将 %ld 与可可对象一起使用。

将其转换为整数/长整数并使用 %ld 或使用 %@

用这个 :

NSLog(@"num %@", sharedSingleton.showCommentOrCreate);

或者,您可以这样做:

NSLog(@"num %ld", [sharedSingleton.showCommentOrCreate longValue]);

NSLog(@"num %i", [sharedSingleton.showCommentOrCreate integerValue]);
于 2013-01-24T18:50:57.357 回答