2012-11-30 51 views
0

我已經單身我以這種方式實現:辛格爾頓改變整數

PhotoViewController* sharedSingleton = [PhotoViewController sharedManager]; 

我知道,推出一個方法我要做[sharedSingleton方法]。

但是如果我想要將PhotoViewController.h文件中聲明的整數更改爲NSInteger * tagNumber,鋤頭可以這樣做嗎?我試過這個:

[sharedSingleton.tagNumber = 1]; 

但它不工作!

編輯:

錯誤:對類型photoViewController的對象沒有找到物業tagNUmber

@interface PhotoViewController : UIViewController{ 

BOOL newMedia; 
UIPopoverController *popoverController; 
DBRestClient *restClient; 
NSInteger* tagNumber; 
} 

+ (PhotoViewController *) sharedManager; 

@end 
+0

它不能被聲明爲NSInteger的*。 如果你想訪問tagNumber屬性,你應該在PhotoViewController.h中聲明它爲@property(assign)NSInteger tagNumber – Fmessina

回答

1

單身人士定期對象。唯一的區別是隻能從該類創建一個實例。

如果你不能設置tagNumber,那麼很可能是其他類型的編碼錯誤正在發生......也許tagNumber屬性是在一個類擴展中聲明的,使得訪問器/增變器方法是私人的?

如果您編輯問題的方式是如何聲明tagNumber,並且還包含您收到的錯誤消息,那麼我將能夠編輯此答案併爲您提供更具體的建議。

編輯: ...是的,絕對是雙重檢查,以確保你沒有申報的NSInteger的是一個指針......一個NSInteger是標量型(所以它需要一個直接的價值,並沒有按'使用取消引用'*'操作符)。

我建議使用屬性,而不是直接訪問實例變量:

@interface PhotoViewController : UIViewController 

@property (nonatomic, assign) BOOL newMedia; 
@property (nonatomic, strong) UIPopoverController *popoverController; 
@property (nonatomic, strong) DBRestClient *restClient; 
@property (nonatomic, assign) NSInteger tagNumber; 

+ (PhotoViewController *) sharedManager; 

@end 

然後設置變量去掉括號爲:

sharedSingleton.tagNumber = 1; 
+0

請參閱編輯 – Alessandro

+0

我使用了這個:PhotoViewController * sharedSingleton = [PhotoViewController sharedManager]; sharedSingleton.tagNumber = 2;但仍然當我NSLog它從PhotoViewController它給0 0. – Alessandro

+0

@interface PhotoViewController:UIViewController { \t BOOL newMedia; UIPopoverController * popoverController; DBRestClient * restClient; } +(PhotoViewController *)sharedManager;屬性(非原子,分配)NSInteger的tagNumber; – Alessandro