SQLite 데이터베이스의 정보를 보유하는 객체가있는 Cocoa 프로젝트가 있습니다. 지금까지 정보는이 개체에 의해 메모리에 저장되고 사용자 인터페이스에서 새로운 정보를 읽고 쓰는 데 사용됩니다. 하지만 작은 문제가 생겼습니다 ... 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
당신이 다음 번 개체를 만들고 필요에 따라 유지 각 컨트롤러와 함께, 주변의 개체를 전달할 수 있습니다
#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