有許多這樣做的方法,但一個方法是定義所有的視圖控制器可以訪問一個單獨的模型對象。例如,Model.h
定義了兩個屬性,text
和array
:
#import <Foundation/Foundation.h>
@interface Model : NSObject
@property (nonatomic, strong) NSString *text;
@property (nonatomic, strong) NSMutableArray *array;
+ (instancetype)sharedModel;
@end
Model.m
只是實現sharedManager
方法,其允許各種控制器以訪問該共享模型:
#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 "Model.h"
上方,然後任何視圖控制器可以通過訪問模式:
Model *model = [Model sharedModel];
現在你可以設置或獲取text
和array
屬性,你的心臟的內容。例如
model.text = @"Hello, World";
很明顯,只是改變Model.h
屬性是你想要的,而不是我一個字符串和一個數組的例子。
來源
2013-05-09 05:49:48
Rob
+1完美。如果你將'sharedManager'改爲'sharedModel'以使用類的名字,這聽起來會很好。 – Anupdas 2013-05-09 07:36:34
@Anupdas很好的建議。這是我在Xcode中的一個自動化片段,所以我只是剪切和粘貼,當然這是個好主意。我相應地更新了我的答案。 – Rob 2013-05-09 08:07:43
謝謝!這做了訣竅,並且非常有幫助。也感謝你的明確解釋。 – user2330744 2013-05-10 03:33:47