为什么我的内部成员变量的名称会破坏数据绑定?

时间:2012-05-01 23:37:46

标签: cocoa cocoa-bindings

所以我对可可编程真的很陌生。事实上,我对Mac平台也很陌生。仍然试图习惯控制+左箭头把我带到线的开头。

OK: 所以我正在完成Hillegass的“Cocoa Programming(第4版)”一书中的教程。所以我进入了第9章,它开始创建一个文档视图应用程序,它使用NSArrayControler绑定到Person的NSMutableArray。

本教程引导我创建了一个文档子类,并添加了一个NSMutableArray指针。所以我采取了一些自由,并将其命名为mEmployee而不仅仅是员工。

@interface RMDocument : NSDocument
{
    NSMutableArray* mEmployees;
}
-(void) setmEmployees:(NSMutableArray*)a;

-(void) insertObject:(Person*)p inEmployeesAtIndex:(NSUInteger)index;
-(void) removeObjectFromEmployeesAtIndex:(NSUInteger)index;

-(void) startObservingPerson:(Person*) person;
-(void) stopObservingPerson:(Person*) person;

@end

现在,当我这样做时,NSArrayController似乎绑定了。因此从未调用过setEmployee,insertObject和removeObject等方法。

现在我仍然对Objective-C很新,但我认为mEmployee是我的'RMDocument'界面的内部成员变量,我可以将它命名为我想要的。我想在名称前加上'm',以便将其与其他变量名称区分开来(C ++中的成员变量类似)。显然这是一个很大的不,没法。

那么为什么变量名有这么大的影响?

我已将项目的整个来源放在: https://www.dropbox.com/sh/fq166ap3xzlw5xc/EZJXqIZPRY/RaiseMan

谢谢!

1 个答案:

答案 0 :(得分:2)

您的访问者方法的名称需要遵循命名约定:对于属性“foo”,setter是“setFoo”(注意大小写)。因此,您需要setMEmployees,而不是setmEmployees

作为旁注,你用“m”作为成员变量前缀的想法不是典型的Cocoa风格;它可能会让你的代码更难以让其他人阅读。