使用singleton为NSNumber分配值

时间:2013-01-24 18:47:27

标签: objective-c

我将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:整数],我总是得到一个不是我设置的数字的数字:

e.g。 2013-01-24 19:42:24.936 Splash-it [870:907] num 475536752

有谁知道为什么?

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

你使用%ld和cocoa对象。

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

使用此:

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

或者你可以这样做:

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

NSLog(@"num %i", [sharedSingleton.showCommentOrCreate integerValue]);