は*
、すべてのObjective-Cオブジェクトであるポインタを示します。(メモリ内のこれらのオブジェクトへのポインタを渡します)。基本的なレベルでは、これらは通常のCポインターです。object->data
私の記憶が正しければ、C構造体へのポインターを使用する場合と同じように、を実行することで、Objective-Cオブジェクトの一部のデータにアクセスできます。
これ_
はCocoa(および他のいくつかの言語)の規則であり、「このオブジェクトに対してプライベートであると見なされるべきデータの一部」を意味します。
Objective-Cには@private
宣言がありますが、これは言語への比較的新しい追加でもあります-コードが2または3年以上前のものである場合(またはOS Xのはるかに古いバージョンを対象としている場合)、使用しない可能性があります@private
この最初の言語インフラストラクチャの欠如のために、これ_
は(多くの場合)Cocoaコミュニティによって「ねえ、これを直接設定したり読んだりしないでください」とマークするために使用されます。
それで:
- Objective-Cクラスを扱う場合、それらは常にポインタであるため、常に
*
クラス名(のような)に従う必要があります。NSString
私はNSString somestring
あなたのコードのあなたの行について混乱しています-それはより複雑な警告を生成するか、あなたがそれを使おうとするとクラッシュするでしょう
- は
_
プライベートデータを示します。Objective-CクラスのセクションのNSString* _name
ようなことをします。クラス内のメソッドでそのデータを呼び出したり操作したりする場合は、単独で@interface
使用します。_name
つまり、Studentクラスを作成したとします。
// Student.h
@interface Student : NSObject {
NSString* _name;
}
- (NSString*) name_as_caps;
@end
// Student.m
@implementation Student
- (NSString*) name_as_caps {
return [_name uppercase];
}
ここでは、「プライベート」データメンバーを持つクラスを宣言します_name
。私たちのStudent
クラスは何らかの理由でこれを大文字で返す必要があるので、それを行うためのメソッドを作成し、そこでメソッドを使用_name
して呼び出しますuppercase
。
ここでは、型(またはクラス名)または_nameを数回参照する必要がありました。1回は変数を宣言します。name_as_caps
言う必要があるので:this method returns a pointer to an NSString object
、したがって、を使用しましNSString *
た。