FlipsideViewController

FlipsideViewController

此代码来自实用程序应用程序,由苹果在创建项目时添加。
这两者的区别是什么:

- (void)flipsideViewControllerDidFinish:(FlipsideViewController *)controller
{
    [self dismissModalViewControllerAnimated:YES];
}

而这个:
- (void)flipsideViewControllerDidFinish:(FlipsideViewController *)controller
{
    [controller dismissModalViewControllerAnimated:YES];
}

它们都能工作,但第一个是苹果公司添加的实用程序的主要代码。
那么有什么区别吗,为什么自我会起作用呢?自己是主控制器,而不是FLIPWIDVIEW控制器。我不知道,这和代表团有关系吗?
谢谢您。

最佳答案

这完全取决于哪个对象正在执行flipsideViewControllerDidFinish;如果它与controller相同,那么它是一样的。
实际上,发生的是,有时委托的类(在您的情况下FlipsideViewController)也实现委托协议(即,作为委托)。在这种情况下,selfcontroller是相同的。这将对应于委托初始化(例如在init方法中):

 self.delegate = self;

但是您可以让您的委托成为不同的类(例如,应用程序委托,或者其他什么),在这种情况下,它们将是不同的。在这种情况下,你会说(例如在init中):
self.delegate = [UIApplication sharedApplication].delegate;

在这种情况下,应用程序委托将接收到对FlipsideViewController的调用,controller参数告诉它引用哪个对象;在这种情况下,self!=controller
另一种情况是,当您的委托代表多个对象时;在这种情况下,参数说明哪个对象是委托对象。
实际上,在委托方法实现中,您可以不用任何考虑就能安全地使用。

10-05 20:20