0

我在我的示例应用程序中做以下事情:

我创建了一个模型类并在其中声明了一个数组作为属性。

@interface MyModel : NSObject

@property (strong, readwrite) NSArray *charactersToDisplay;

@end

在我的应用委托类中,我将 MyModel 声明为一个属性。

@interface MyAppDelegate : NSObject <NSApplicationDelegate>

@property (strong, readwrite) MyModel *myModel;
@property (weak) IBOutlet NSObjectController *myModelController;

- (IBAction)test:(id)sender;

@end

在 MainMenu.xib 中,我拖放了一个对象控制器对象,并在 MyAppDelegate 中将其绑定到 myModel。

我正在努力实现以下目标:

我在 MyAppDelegateChange 中定义了一个动作测试:它绑定到一个按钮,并尝试更改 charactersToDisplay 中的值。

问题是:

当我使用此代码时,它不起作用:

[self.myModel setCharactersToDisplay:[[NSArray alloc] initWithObjects:@"1",@"2", @"3", "@4", @"5", nil]];

但是,如果我尝试使用以下代码通过对象控制器更改其值,它正在工作:

[[self.myModelController content] setCharactersToDisplay:[[NSArray alloc] initWithObjects:@"1",@"2", @"3", "@4", @"5", nil]];

谁能建议我 - 为什么当我尝试通过调用 myModel 上的 setter 方法直接更改值时它不起作用?

4

1 回答 1

0

那是因为如果您想从 appDelegate 访问 myModel,您需要使其具有 IBOutlet,然后在接口构建器中连接该插座。如下将 IBOutlet 添加到 myModel。

@interface MyAppDelegate : NSObject <NSApplicationDelegate>

@property (strong, readwrite) IBOutlet MyModel *myModel;
@property (weak) IBOutlet NSObjectController *myModelController;

- (IBAction)test:(id)sender;

@end

然后将该插座连接到界面生成器内的 MyModel 对象。

于 2012-04-20T11:21:48.553 回答