Вы можете создать синглтон-класс контроллера данных и использовать его так же, как Apple, в своих собственных средах. Вот пример класса контроллера одноэлементных данных.
// MyDataController.h
#import <Foundation/Foundation.h>
@interface MyDataController : NSObject
@property (nonatomic, retain) NSMutableArray *data;
+(MyDataController*)sharedController;
@end
// MyDataController.m
#import "MyDataController.h"
MyDataController *__dataController;
@implementation MyDataController
@synthesize data;
-(id)init {
self = [super init];
if (self) {
data = [NSMutableArray new];
}
return self;
}
+(MyDataController*)sharedController {
if (__dataController == nil) {
__dataController = [MyDataController new];
}
return __dataController;
}
@end
В этом классе iVar data
является переменной экземпляра класса MyDataController, а __dataController
является переменной класса. Этот синглтон саминициализируется, когда вы вызываете его открытый статический метод +(MyDataController*)sharedController
. Вы можете получить глобальный доступ к массиву данных следующим образом.
[[MyDataController sharedController] data];
Чтобы позвонить этому синглтону, вам потребуется #import "MyDataController.h"
в каждом классе, из которого вы хотите получить к нему доступ, или добавить его в свой файл pch, чтобы получить к нему глобальный доступ
#import <Availability.h>
#ifndef __IPHONE_4_0
#warning "This project uses features only available in iOS SDK 4.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import "MyDataController.h"
#endif
Используя эту схему для синглетонов Objective C, вы можете добавить дополнительные удобные методы в ваш класс. Синглтон сохранит ссылку на один объект своего собственного типа, что означает, что любые дополнительные переменные могут быть объявлены как переменные экземпляра, а не объявлены как переменные класса.