0

だから私はココアプログラミングに本当に慣れていません。実際、私はMacプラットフォームにも非常に慣れていません。まだcontrol+左矢印が行の先頭に私を連れて行くという事実に慣れようとしています。

Ok:それで私はHillegassの本「CocoaProgramming(4thedition)」のチュートリアルを進めています。そこで、NSArrayControlerを使用してPersonのNSMutableArrayにバインドするドキュメントビューアプリの作成について説明する第9章に進みました。

チュートリアルでは、ドキュメントのサブクラスを作成し、NSMutableArrayポインターを追加する方法について説明しました。だから私は自由を取り、それを単なる従業員ではなくmEmployee'sと名付けました。

@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」インターフェイスの内部メンバー変数であり、好きな名前を付けることができると思いました。他の変数名(C ++の同様のメンバー変数の種類)と区別するために、名前の前に「m」を付けたいと思いました。どうやらそれは大したことではありませんでした。

では、なぜ変数名がこれほど大きな影響を与えたのでしょうか。

プロジェクトのソース全体を https://www.dropbox.com/sh/fq166ap3xzlw5xc/EZJXqIZPRY/RaiseManに配置しました。

ありがとう!

4

1 に答える 1

2

アクセサメソッドの名前は、命名規則に従う必要があります。プロパティ「foo」の場合、セッターは「setFoo」です(大文字と小文字の区別に注意してください)。setMEmployeesしたがって、ではなく、を持っている必要がありますsetmEmployees

ちなみに、メンバー変数の前に「m」を付けるという考えは、典型的なCocoaスタイルではありません。コードが他の人にとって読みにくくなる可能性があります。

于 2012-05-02T01:48:21.253 に答える