当前位置:编程学习 > wap >>

请问IOS中如何实现像C#中的事件

试了delegate和NSNotificationCenter,都不能达到想要的效果。
想实现这样的效果:
1. 有一个类parent.m, 类里有方法update();
3. 在另外一个类view.m中定义了一个方法viewUpdate();
想要的效果是在父类parent.m的update()方法中调用view.m类的viewUpdate()方法.

使用回调的方式, 如果是C#可以这样实现:
1. 在父类parent.m中定义事件event
2. 然后再view.m类中注册这个事件并绑定viewUpdate()方法
   event+=viewUpdate();
3. 最后在父类parent.m的update()方法中
   if(event != null) event();
就可以成功调用viewUpdate()方法。

小弟初学IOS,不知道在IOS中如何实现类似的效果,请大哥们指点一下~~ --------------------编程问答-------------------- http://blog.csdn.net/huifeidexin_1/article/details/7567731 --------------------编程问答--------------------
引用 1 楼 xxo1986cxm 的回复:
http://blog.csdn.net/huifeidexin_1/article/details/7567731


请问如果我在一个类实例了多个nsobject
然后对多个nsobject执行 nsobject.delegate = self;
那这个类中的方法执行的时候如何判断属于哪个nsobject? --------------------编程问答--------------------
引用 2 楼 Kellen_He 的回复:
Quote: 引用 1 楼 xxo1986cxm 的回复:

http://blog.csdn.net/huifeidexin_1/article/details/7567731


请问如果我在一个类实例了多个nsobject
然后对多个nsobject执行 nsobject.delegate = self;
那这个类中的方法执行的时候如何判断属于哪个nsobject?


很多方法,一般是tag或者自定义一个属性用来区分 --------------------编程问答-------------------- 和c#里面差不多 button的click事件一样 btn_click(object sender,EventArgs e) 这个sender就是按钮
delegate的方面里面把nsobject带上也可以,类似tableView这样
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath --------------------编程问答-------------------- delegate 和 NSNotificationCenter 应该都可以实现。
对象间数据的交互的过程中,对象本身无非承担了两种角色,数据的发送者(sender),以及数据的接收者(receiver). 发送者定义了接收者需要遵循的协议(protocol). 接收者需要实现发送者定义的协议。协议是两者的桥梁也是约束。
delegate 与 NSNotificationCenter之间是有很大区别。如何根据自己的需求,选择合适的解决方案是很关键的问题。delegate 关注的是两个对象关系紧密,如果让这两个关系紧密的对象解藕。 NSNotificationCenter 是以通知中心观察者的模式来实现。只要注册了消息的观察者都可以接收到发送的消息。

补充:移动开发 ,  iPhone
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,