2011-09-12 11 views
0

特定の「id型のドキュメント」に私を指摘できますか?私は動的な型指定ドキュメントを使ってきましたが、型IDの使い方を知りたいと思います。特にidがnullであるかどうかをチェックする方法。id動的型のドキュメント

答えて

3

idタイプは、元のタグが暗示しているように、Cocoa/Cocoa Touchフレームワークではなく、Objective-C言語自体に直接関係しています。ダイナミックなタイピングも含まれていません。 Here's a little introduction in Apple's docs.

は、上記のリンクから引用し、あなたの特定の質問に、答えるために:

キーワードnilがnullオブジェクトとして定義され、0の値を持つidid,nil、その他の基本型Objective-Cはヘッダファイルobjc/objc.hに定義されています。

nilおよびNULLは同等(ゼロポインタ)なので、互換性があります。私はあなたの質問を誤解している場合

id myId = [[something alloc] init]; 

// Short for if (myId == nil) 
if (!myId) { 
    // myId is nil 
} else { 
    // myId is not nil 
} 
+0

を 'id'だけ*のようなものですパスのワイルドカードで指定します。 id ZhangChn

+0

シングルトンオブジェクトNSNullは、そのオブジェクトがいつ使われるのですか?ありがとうございました。 –

+0

Appleから直接入手しました: "NSNullクラスは、nilが値として(通常は配列や辞書などのコレクションオブジェクト内で)禁止されている状況でnull値を表すために使用するシングルトンオブジェクトを定義します。 –

0

申し訳ありませんが、あなただけのようなものはしないだろう:

if文の基本で

、あなただけのこの操作を行う基本的にあなたがidを使用

// given 
id sender; 

if (sender == nil) {} 

をそれに割り当てられている可能性のあるオブジェクトをキャッチします。だからあなたのような何かを行うことができます。

id name = [NSString stringWithString:@"john"]; 

を、今名前が[name class]を呼び出すことによって確認することができNSString対象になります。

詳細については、this pageのIDセクションをご覧ください。

+0

はい、私はあまりにも思ったことだが、idオブジェクトをnullにする代わりに[NSNull null]に設定しています。 "if(myIdVar)"チェックが機能しません...なぜ私はちょうどその私がやっていることに特有です。 –

1

The Objective-C Programming Language - 具体的にはオブジェクト、クラス、メッセージングの章を参照してください。

Objective-Cでは、オブジェクト識別子は別のデータ型です:id。この型は、クラスに関係なく、あらゆる種類のオブジェクトの一般的な型であり、クラスのインスタンスやクラスオブジェクト自体に使用できます。 [...]

キーワードnilはヌルオブジェクト、値0のIDとして定義されます。id、nil、その他のObjective-Cの基本タイプは、ヘッダファイルobjc/objc.hで定義されています。

変数を値で比較するには、単純に==演算子を使用します。だから、ゼロをテストするために、あなたが実行します。

idは、オブジェクトへのポインタとして定義された:私ははっきりとそれを見て、私はここでそれを言うよので、任意の他の回答で述べていませんでした

someVariable == nil 
1

。(ID)0 - -

nilは、IDとしてゼロキャストである結果として、次のコード

NSString * myString = nil; 
id idString = myString; 
if (idString == nil) NSLog(@"idString == nil"); 
if (idString == NULL) NSLog(@"idString == NULL"); 
if (idString == (id)0) NSLog(@"idString == (id)0"); 

は、以下の出力があります。

2011-09-12 07:25:57.297 Sample Project[22130:707] idString == nil 
2011-09-12 07:25:57.298 Sample Project[22130:707] idString == NULL 
2011-09-12 07:25:57.299 Sample Project[22130:707] idString == (id)0