2013-01-24 30 views
-3

我設置我的viewcontrollerA作爲一個單身人士。在viewcontrollerA.h我:使用單身人士分配NSNumber值

@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:整數],我總是得到一些這不是我所設置的號碼:

例如2013年1月24日19:42:24.936飛濺,它[870:907] NUM 475536752

有誰知道爲什麼嗎?

+0

爲什麼你認爲1 。這與Xcode有關,2.(指向)'NSNumber'對象的地址應該與其中包含的值相同? – 2013-01-24 18:50:47

+0

像這樣的東西在Java中工作,但不在Obj-C – nielsbot

+0

@nielsbot:即使在objective-c中,類型轉換也可以工作。即使在Java中,你可以強制轉換'(ComplexNumber)employeeObject':P –

回答

4

因爲你打印的指針NSNumber對象,而不是存儲在其中的整數值。

+0

請解釋一下,我該怎麼辦? – Alessandro

+0

@Alessandro你應該閱讀一個關於C類型的好教程,特別關注指針和原語。 – 2013-01-24 18:52:08

+2

@Alessandro哦,還是你的意思是「plz gimme teh codez」?我懂了。然後使用'[sharedSingleton.showCommentOrCreate longValue]'。 – 2013-01-24 18:52:37

1

您使用%ld與可可物件。

轉換成整數/長,使用%LD或使用%@

使用此:

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

或者你可以做:

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

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

我可以這樣做,例如:如果((長)sharedSingleton.showCommentOrCreate == 1){ } ?? – Alessandro

+1

否....使用[... longValue]或[... intValue] –

+0

請你可以告訴我嗎? – Alessandro