0
-(void)setFaceView:(FaceView *)faceView  
{
_faceView= faceView;
self.faceView.dataSource = self;
}

iTunes で有名なスタンフォード大学の講義で IOS プログラミングを学び始めたところです。私は現在講義 6 にいて、授業についていくのが難しくなり始めています。

それは本当に基本的なことですが、「自己」がどのように機能するのか本当にわかりません。このコードの「自己」が何をしているのか、誰か教えてもらえますか?

4

2 に答える 2

2

selfメソッドを実行するオブジェクトを参照するインスタンスメソッドのobjective-cの暗黙のパラメータです-ここを参照してください:SelfおよびSuperへのメッセージ

この場合、self.faceViewは、このメソッドを実行するインスタンスにバインドされているfaceViewのプロパティアクセサーへの呼び出しであり、_faceView= faceView; 割り当てによって入力パラメーターfaceViewがiVarに割り当てられ_faceViewます。このメソッドを実行するオブジェクトを、オブジェクトのプロパティのプロパティにself.faceView.dataSource = self;割り当てます。dataSourcefaceView

于 2012-06-28T03:45:59.137 に答える
1

self はオブジェクトそのものです。オブジェクトを割り当てるとき。クラスが使用するすべての変数を保持するのに十分なメモリを確保します。

ただし、オブジェクトを初期化すると、そのメモリが自己にアタッチされます。self は基本的に「変数」であり (私はこの用語を大まかに使用しています)、自分がいるオブジェクトのすべての機能にアクセスできるようにします。

次のメソッドを持つオブジェクトがある場合

+(BOOL) isThisWorking{ return YES;}

クラスでメソッドを呼び出す必要があります。自己は関与しません。

ただし、メソッドがある場合

-(BOOL) isThisWorking{ return YES; }

次に、クラスのインスタンスにメソッドをアタッチします。

最初のものを呼び出すには、クラス オブジェクト自体で呼び出す必要があります。

[MyObject isThisWorking];

2 番目のものを呼び出すには、インスタンスで呼び出す必要があります。

MyObject *testObject = [[MyObject alloc] init];
[testObject isThisWorking];

テストオブジェクト内のメソッドにいる場合、メソッドを呼び出すための「testObject」がありません。

その隙間を自分が埋めます。

別のプログラミング言語を使用している場合は、同じことを行う他の構造に慣れているでしょう。

たとえば、.net では、オブジェクトは「this」です。

古い学校のVBでは、正しく覚えていればオブジェクトは「Me」です

于 2012-06-28T04:00:38.040 に答える