我已經在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;
}
現在我想使用的NSMutableDictionary對象中另一種觀點認爲,flashcardView。我使用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知識,並且據我所知,所有的NSView都必須在自己的文件中聲明,但我相信這不是唯一的方法。 – ilovetacos 2010-04-09 22:26:58
當然,你需要有一些方法可以從NSView獲得AppController - 我沒有指定,因爲有很多並完全依賴於你的應用程序設計,但是一旦你有一個AppController以某種方式,你應該可以[[appController uberdict] allKeys]沒有問題。讓NSView瞭解應用程序控制器的常用方法是在視圖上聲明一個IBOutlet,並將它連接到IB的應用程序控制器,或者(如果AppController實際上是應用程序委託)[NSApp委託]。 – 2010-04-10 15:25:18