2

この大会には何か目的がありますか?

4

2 に答える 2

2

次の方法で ivar を「隠す」という次の規則を使用する開発者がいます。

@interface

@private
NSString *_myString
@property (nonatomic, retain) NSString *myString;

@implementation
@synthesize myString = _myString.

これが行うことは、プロパティ myString を介したすべてのアクセスを強制して、ivar への直接アクセスを禁止することです。これは、クラスの内部を隠し、オブジェクト指向のカプセル化の原則に従う方法です。

于 2010-08-23T00:49:05.393 に答える
0

Cocoaのコーディングガイドラインによると、Appleは「プライベート」を意味するためにアンダースコアを使用するのが好きです。

特にメソッドでは、プライベートを意味するプレフィックスとしてアンダースコア文字を使用しないでください。Appleはこの規則の使用を留保します。サードパーティによる使用は、名前空間の衝突を引き起こす可能性があります。それらは、無意識のうちに既存のプライベートメソッドを独自のメソッドでオーバーライドし、悲惨な結果を招く可能性があります。

アンダースコアで始まるメソッド名は、Objective-Cプログラミング言語に従って予約されています(つまり、Cocoaを使用していなくても予約されていると思われます)。

単一の下線文字である「_」で始まるメソッド名は、Appleが使用するために予約されています。

さらに、C / C ++の規則では、先頭のアンダースコアは(多くの場合)実装用に予約されています。多くの人がこれを誤解し、「プライベート」なものに_を使用します。未定義の動作を呼び出したとしても、コードベースの大部分で_FooLog()呼び出しが急増します。

それを行う唯一の理由は、自分のクラスで直接ivarにアクセスすることを思いとどまらせることです。を使用して、他のクラスからのivarアクセス​​を防止し@privateます。

于 2010-08-23T01:07:41.053 に答える