나는 AppController.h에 NSMutableDictionary 객체를 선언하고 해당 AppController.m 파일에서 초기화했습니다.클래스 간 NSMutableDictionary 액세스
AppController.h
#import <Cocoa/Cocoa.h>
@interface AppController : NSObject {
NSMutableDictionary *uberDict;
}
AppController.m는
#import "AppController.h"
@implementation AppController
- (id)init
{
uberDict = [NSMutableDictionary new];
return self;
}
는 지금은 다른보기, flashcardView에 NSMutableDictionary 개체를 사용하려고합니다. AppController 클래스의 메서드를 사용하여 사전에 항목을 추가/제거하고 flashcardView보기에서 같은 사전을 현재 항목과 함께 사용하려고합니다. 문제는 AppController 외부에서 사전 객체에 액세스하는 방법을 모른다는 것입니다. 내가 어떻게 그럴 수 있니? 문제가 자리하고있는 곳 flashcardView.m
- (void)setAndCheckString
{
NSArray *keys = [uberDict allKeys];
NSString *i;
for (i in keys) {
string = i;
NSLog(@"%@", string);
}
}
에서
는 여기에 있습니다. 이 작업을하기 위해 uberDict에서 무엇을합니까? 감사!
여전히 flashcardView에서 uberDict를 "볼"수 없습니다. 그렇습니까? 이것을 구현했지만 여전히 같은 오류를 반환했습니다. 속성에 대한 나의 이해에서 그들은 클래스의 범위 내에서만 기능하고 getter 및 setter 메서드를 바꿉니다. 디자인 관점에서 NSView 객체를 다른 객체와 상호 작용할 수있는 더 좋은 방법이 있습니까? Obj-c에 대한 1 주일 정도의 지식 만 가지고 있으며 모든 NSView를 자신의 파일에 선언해야한다는 것을 알고 있지만 이것이 유일한 방법은 될 수 없다고 확신합니다. – ilovetacos
물론 NSView에서 AppController에 접근 할 방법이 필요하다. - AppController가 어떤 식 으로든 갖춰지면 애플리케이션 디자인에 많은 요소와 전적으로 의존하기 때문에 어떤 것을 지정하지 않았다. 문제없이 [[appController uberdict] allKeys] 할 수 있어야합니다. NSView가 앱 컨트롤러에 대해 알게하는 일반적인 방법은 뷰에 IBOutlet을 선언하고이를 IB의 앱 컨트롤러에 연결하거나 (AppController가 실제로 애플리케이션 위임자 인 경우) [NSApp delegate]입니다. –