この大会には何か目的がありますか?
2 に答える
次の方法で ivar を「隠す」という次の規則を使用する開発者がいます。
@interface
@private
NSString *_myString
@property (nonatomic, retain) NSString *myString;
@implementation
@synthesize myString = _myString.
これが行うことは、プロパティ myString を介したすべてのアクセスを強制して、ivar への直接アクセスを禁止することです。これは、クラスの内部を隠し、オブジェクト指向のカプセル化の原則に従う方法です。
Cocoaのコーディングガイドラインによると、Appleは「プライベート」を意味するためにアンダースコアを使用するのが好きです。
特にメソッドでは、プライベートを意味するプレフィックスとしてアンダースコア文字を使用しないでください。Appleはこの規則の使用を留保します。サードパーティによる使用は、名前空間の衝突を引き起こす可能性があります。それらは、無意識のうちに既存のプライベートメソッドを独自のメソッドでオーバーライドし、悲惨な結果を招く可能性があります。
アンダースコアで始まるメソッド名は、Objective-Cプログラミング言語に従って予約されています(つまり、Cocoaを使用していなくても予約されていると思われます)。
単一の下線文字である「_」で始まるメソッド名は、Appleが使用するために予約されています。
さらに、C / C ++の規則では、先頭のアンダースコアは(多くの場合)実装用に予約されています。多くの人がこれを誤解し、「プライベート」なものに_を使用します。未定義の動作を呼び出したとしても、コードベースの大部分で_FooLog()呼び出しが急増します。
それを行う唯一の理由は、自分のクラスで直接ivarにアクセスすることを思いとどまらせることです。を使用して、他のクラスからのivarアクセスを防止し@private
ます。