У меня есть проект Cocoa с объектом, который хранит информацию из базы данных SQLite. К настоящему времени информация хранится в памяти этим объектом и используется в пользовательском интерфейсе для чтения и записи новой информации. Но теперь я пришел к небольшой проблеме ... Я решил создать новый класс контроллера для обработки действий NSTableView, и я хочу получить доступ к тому же объекту базы данных, который был объявлен в другом месте. Какая у вас лучшая альтернатива для доступа к этой информации? Я хочу избежать загрузки информации более одного раза в памяти, а также избегать использования чистых кодов C/C++ с глобальными переменными.Переменный доступ в нескольких классах
Лучше понять мою точку зрения, взглянув на код. Я принимаю и другие решения, естественно.
Моя идея кода в настоящее время, как это:
FirstClass.h
#import <Foundation/Foundation.h>
#import "DatabaseModel.h"
@interface FirstClass : NSObject {
IBOutlet NSScrollView *informationListTable;
NSMutableArray *informationList;
}
@end
FirstClass.m
#import "FirstClass.h"
@implementation FirstClass
- (void)awakeFromNib{
DatabaseModel *list = [[DatabaseModel alloc] init];
informationList = [[NSMutableArray alloc] initWithArray:[list loadList]];
[list release];
[machinesListTable reloadData];
}
SecondClass.h
#import <Foundation/Foundation.h>
@interface SecondClass : NSObject {
IBOutlet NSTextField *labelName;
NSString *name;
}
- (IBAction)showName:(id)sender;
@end
SecondClass.m
#import "FirstClass.h"
#import "SecondClass.h"
@implementation SecondClass
- (IBAction)showName:(id)sender{
/*
Here name must get something like:
[[FirstClass.informationList objectAtIndex:3] name]
Here labelName must display name.
*/
}
@end
Где я могу найти дополнительную информацию о одиночных играх? – Apollo
Большинство книг по программированию описывают концепцию, для реализации на объективе-c, я думаю, [это лучший способ] (http://cocoasamurai.blogspot.com/2011/04/singletons-your-doing-them-wrong. html) – wattson12