此代码来自实用程序应用程序,由苹果在创建项目时添加。
这两者的区别是什么:
- (void)flipsideViewControllerDidFinish:(FlipsideViewController *)controller
{
[self dismissModalViewControllerAnimated:YES];
}
而这个:
- (void)flipsideViewControllerDidFinish:(FlipsideViewController *)controller
{
[controller dismissModalViewControllerAnimated:YES];
}
它们都能工作,但第一个是苹果公司添加的实用程序的主要代码。
那么有什么区别吗,为什么自我会起作用呢?自己是主控制器,而不是FLIPWIDVIEW控制器。我不知道,这和代表团有关系吗?
谢谢您。
最佳答案
这完全取决于哪个对象正在执行flipsideViewControllerDidFinish
;如果它与controller
相同,那么它是一样的。
实际上,发生的是,有时委托的类(在您的情况下FlipsideViewController
)也实现委托协议(即,作为委托)。在这种情况下,self
和controller
是相同的。这将对应于委托初始化(例如在init方法中):
self.delegate = self;
但是您可以让您的委托成为不同的类(例如,应用程序委托,或者其他什么),在这种情况下,它们将是不同的。在这种情况下,你会说(例如在init中):
self.delegate = [UIApplication sharedApplication].delegate;
在这种情况下,应用程序委托将接收到对
FlipsideViewController
的调用,controller
参数告诉它引用哪个对象;在这种情况下,self
!=controller
。另一种情况是,当您的委托代表多个对象时;在这种情况下,参数说明哪个对象是委托对象。
实际上,在委托方法实现中,您可以不用任何考虑就能安全地使用。