什么是.delegate = self?

任何人都可以解释someViewController.delegate = selfself.delegate的含义? 他们在哪里帮助我们?

代表发送消息

例如:如果您使用加速度计委托,您将收到关于加速度计的消息。

如果你使用这个新的中微子探测代表,你会得到关于在该地区探测到的任何中微子的信息。

如果您使用PopUps,PopUps会向您发送消息。 而这样做的方式是与PopUp的代表。 有很多很多的例子。

所以,代表发送消息。

就这么简单。

你可能会问,“它在哪里发送这些消息?”

答案是这样的:它将消息发送到你设置“.delegate”的地方。

当你“设置代表”,你在做什么是说你想要的消息去。

因此,

blah.delegate = amazingPlace会将消息发送到“amazingPlace”。

blah.delegate = somewhereElse会将消息发送到“somewhereElse”。

blah.delegate = self将发送消息…… 给你

很多时候,你想要的信息来“你”,所以你只是说“blah.delegate = self”

忘记那行代码是一个非常常见的错误。

如果你忘记了那行代码,你就塞满了。 信息无处可去,而你却一头雾水,试图弄清楚什么地方出了问题。

还有一件事你必须做:当你使用委托,你必须说你想使用委托。 在Objective-C的旧时代,你只要做到这一点…

 @interface AppDelegate_Pad : NSObject <UIApplicationDelegate> @interface BigTop : UIViewController <ASIHTTPRequestDelegate, UIPopoverControllerDelegate> @interface Flying : UIViewController <UIAccelerometerDelegate> 

你可以看到'BigTop'想要使用两个委托,即ASIHTTPRequestDelegate和UIPopoverControllerDelegate。 而“飞行”只想使用一个代表 – 它想要使用加速度计。

在Swift中 ,它不是那么容易 – 你只需要一个逗号,然后是协议:

  class YourClass:UIViewController, SomeDelegate, AnotherDelegate 

如果不使用代表,iPhone就不能在iPhone上做太多的事情。

代表使用在任何地方,并始终在iOS。

class级可能会使用十几名代表是完全正常的。

在上面的“飞行”的例子中,在“飞行”代码的某处,它不得不说[[UIAccelerometer sharedAccelerometer] setDelegate:self];

在BigTop的情况下,它将不得不为ASIHttpRequests设置某个地方的委托,

 ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; [request setPostValue:gid forKey:@"gid"]; [request setPostValue:nom forKey:@"nom"]; [request setDelegate:self]; 

(不要忘记在旧的日子用objective-c, x.delegate=self[x setDelegate:self]完全一样。)

现在使用Swift ,只需键入

  x.delegate = self 

这就是它的全部。

所以这就是你在做什么。 代表发送消息 。 你必须说你想要的消息去。 非常典型的,你希望他们去“你”,所以在这种情况下,你只需要说x.delegate=self

希望它有帮助。

如果在任何情况下,伯恩的答案没有帮助..一个代表基本上是一个事件对一个对象的反应,并说“.delegate =自我”意味着这些协议已被采纳在自我…例如..会发生什么时tableview的委托方法“didSelectRowAtIndexPath”…select一行,如果一个viewcontroller有一个tableview ..和“didSelectRowAtIndexPath”定义在该viewcontroller,那么我们会说… tableview.delegate = self“ …和“self.anything”用于说“任何东西”是自我的属性..例如NSString *任何; @属性(非primefaces,保留)NSString *任何;

那么“self.anything”