は*、すべての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 *た。