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; 是将输入参数分配给faceViewiVar _faceViewself.faceView.dataSource = self;将执行此方法的对象分配给对象dataSource属性的faceView属性。

于 2012-06-28T03:45:59.137 回答
1

self 是对象本身。当你分配一个对象时。它留出足够的内存来保存该类将使用的所有变量。

但是,当您初始化对象时,您将该内存附加到自身。self 本质上是一个“变量”(我松散地使用这个词),它使您可以访问您所在对象的所有功能。

如果您有使用以下方法的对象

+(BOOL) isThisWorking{ return YES;}

您将不得不在类上调用该方法。不涉及自我。

但是,如果您有方法

-(BOOL) isThisWorking{ return YES; }

那么您将有一个附加到类实例的方法。

调用第一个将要求您在类对象本身上调用它。

[MyObject isThisWorking];

调用第二个将要求您在实例上调用它。

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

当您在测试对象中的方法中时,您将没有“testObject”来调用方法。

自我填补了这个空白。

如果您来自另一种编程语言,您将熟悉做同样事情的其他结构。

例如在 .net 中,对象是“this”

如果我没记错的话,在老学校VB中,对象是“我”

于 2012-06-28T04:00:38.040 回答