我正在製作一個程序,它要求所有類都可以訪問一個View Controller中的屬性。我將如何創建一個全球性的財產?Global Property- objective c
0
A
回答
1
幾個選項:
理想情況下,你應該避免使其成爲一個全球性的,而是從一個視圖控制器通過性能。有關示例,請參閱此excellent answer(例如將其設置爲
prepareForSegue
)。或者,您可以創建一個單身人士,並使您的單身人士的財產。例如,Model.h:
// Model.h #import <Foundation/Foundation.h> @interface Model : NSObject @property (nonatomic, copy) NSString *myString; + (instancetype)sharedModel; @end
和Model.m
// Model.m #import "Model.h" @implementation Model + (instancetype)sharedModel { static id sharedMyModel = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedMyModel = [[self alloc] init]; }); return sharedMyModel; } @end
,然後你的各種控制器可以使用這個單獨的類,並說明財產需要從其他類,如訪問:
#import "SomeViewController.h" #import "Model.h" @implementation SomeViewController - (void)viewDidLoad { [super viewDidLoad]; Model *model = [Model sharedModel]; model.myString = @"abc"; } @end
和
#import "AnotherViewController.h" #import "Model.h" @implementation AnotherViewController - (void)viewDidLoad { [super viewDidLoad]; NSString *string = [[Model sharedModel] myString]; // Do whatever you want with the string } @end
你的應用程序實際上已經有一個單身人士,應用程序委託,你可以添加一個屬性,並使用它。例如,如果你的應用程序委託的.H定義的屬性,
someOtherString
,然後你可以參考它像這樣:AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; appDelegate.someOtherString = @"xyz";
如果我要使用一個單獨的模型數據,我更喜歡我的創作自己的,但這是一些人使用的另一種方法。
+0
感謝您的幫助,我現在看到我可能只是使用全局變量,這更容易。不管怎麼說,還是要謝謝你。 – DonyorM
相關問題
- 1. Objective C @property comments
- 2. Objective-C Property Access
- 3. @property Objective-C
- 4. hide @property in objective C
- 5. @property objective -c語法
- 6. global objective
- 7. GNU Global支持objective-c嗎?
- 8. Vuejs,Plugin,global method/property not found
- 9. 瞭解IOS和Objective-C @property
- 10. 如何使用Objective-C @property
- 11. 何時何地聲明@property? (Objective-C)
- 12. 在objective-c中shadowing @property的問題
- 13. Objective-C:@property和@synthesize和內存泄漏
- 14. Objective-C:@property聲明沒有實現(@synthesize)
- 15. Objective C newbie:valueFor key works,.property does not
- 16. Objective C「@property(nonatomic,retain)」的C++等價物是什麼?
- 17. C Global Struct
- 18. 目標C @property
- 19. Global NSMutableString
- 20. 只讀屬性,以Objective-C的@property指令
- 21. Objective-C:用於基本類型的@property屬性
- 22. 在Objective-C中編寫@property指令的位置?
- 23. 代碼重寫爲在Objective-C ARC擺脫@property的ARC之前
- 24. @property並保留,分配,複製,非原子Objective-C
- 25. Objective-C中@property和weak屬性的用法
- 26. Objective-C中使用的@property和@synthesize是什麼?
- 27. @property,@synthesize並釋放Objective-C中的對象
- 28. 定製的setter/getter方法@property Objective-C的
- 29. 什麼是Objective C屬性(@property)賦值消息傳遞符號?
- 30. 有人可以解釋這個Objective C @property語法嗎?
除非將其放在應用程序委託中,否則不能擁有全局屬性,而不應該這樣做。看看這個問題,答案會顯示如何做一個靜態幫手。 http://stackoverflow.com/questions/8647331/global-property-in-objective-c – BooRanger
有人會告訴我爲什麼繼續投票我的帖子?當我不知道要改變什麼時,它變得非常煩人。 – DonyorM
因爲你沒有先搜索,這個問題已經被回答過了。 – BooRanger