我理解为代表和协议,
@protocol classADelegate-(voID)DelegateMethod;@endclassB <classADelegate>{ classA *ObjOfclassA=[[classA alloc]init]; ObjOfclassA.delegate=self;//while push later,here we have taken the pointer of classB(self) to classA and stored in delegate variable of classA. so from classA we can call the function in classB push:classA from here. -(voID)DelegateMethod{ nslog(@"i am rithik from India"); }}classA{ ID <classADelegate> delegate; -(voID)vIEwdIDload{ [self.delegate DelegateMethod]; }}
我的怀疑是
1为什么我们不像这样在classA中使用
classA{**classB** <classADelegate> delegate;[self.delegate DelegateMethod];}
使用“ID”的原因是什么,它们有什么区别?
2我们调用了来自协议定义的classB的DelegateMethod函数的方法。
相反,我们可以通过定义classB的实例方法直接调用该方法,因为我们在classA的委托变量中获得了classB的指针。
喜欢这个。
classB{-(voID)DelegateMethod;}
然后再调用它
classA{ classB delegate; -(voID)vIEwdIDload{ [self.delegate DelegateMethod]; } }
所以从上面我们已经避免了协议和ID变量。
但是我知道很多人使用委托和协议。在这里,我使用委托和协议来了解任何优点
这里是DelegateMethod函数方法的协议实现的用法。
而不是定义。
@protocol的用法是什么?
请任何一个指导我正确的方向…
我是iphone开发的新手。
现在我知道如何创建代表,但是我来研究NSNotification
这也是像代表这样几乎正确的工作。
所以我什么时候应该使用delgate或NSnotification。
谢谢你
解决方法 简短答案:您可以像电话一样考虑代表。你打电话给你的朋友,特意想跟他们说话。你可以说些什么,他们可以回应。你可以说话,直到你挂断电话。代理人以同样的方式创建两个对象之间的链接,您不需要知道代理的类型,只需要实现协议。另一方面,NSNotifications就像一个广播电台。他们向任何愿意倾听的人广播他们的信息。无线电台不能收到来自听众的反馈(除非有电话或委托)。听众可以忽略消息,或者可以使用它来做某事。 NSNotifications允许您向任何对象发送消息,但是您之间不会有链接来进行通信。如果你需要这种沟通,你应该可以实现一个委托。否则,NSNotifications更简单,更容易使用,但可能会让您陷入困境。长答案:
代表们通常是处理事物的更合适的方式,特别是如果您正在为其他人创建一个框架。当您与代理人使用协议时,您可以获得编译时检查所需的方法,因此,如果您缺少任何必需的方法,您就可以知道何时编译。使用NSNotificationCenter,您没有这样的保证。
NSNotificationCenter是一种“Hack-ish”,是经常使用的新手程序员,可能导致架构差。很多时候这两个功能是可互换的,但更多的“核心”开发人员可能会嘲笑使用NSNotificationCenter。
问:使用“ID”的原因是什么,它们有什么区别?
A:使用ID可以将任何对象作为参数发送给方法。请注意,除非它们包含在各自的对象包装器中,否则不能发送诸如bools,float,double,int等的图元。
classB{-(voID)DelegateMethod;}
然后再调用它
classA{ classB delegate; -(voID)vIEwdIDload{ [self.delegate DelegateMethod]; }}
您提供的上述示例将要求classA的代理始终是类型classB,这是不利的。而不是在这种情况下使用代理,您可能只需使用引用其他类的变量,例如myClassB。代表的美好之处在于,您可以绕过任何对象,只要代码实现所需的方法(编译器确保,只要它被标记为正确的委托类型),代码就可以工作。
总结以上是内存溢出为你收集整理的iphone – 代理和通知有什么区别?全部内容,希望文章能够帮你解决iphone – 代理和通知有什么区别?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)