iOS:什么是Objective-C中的事件监听器?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS:什么是Objective-C中的事件监听器?相关的知识,希望对你有一定的参考价值。

在我的一些学习中,我看到有人提到在视图控制器中你可以拥有一个模型,并在模型上有一些监听器来进行更改。我不认为我正在使用正确的名称,这可能是我的搜索没有发现任何东西的原因。基本上我想将我的服务器调用从控制器移动到我的模型中,但是我需要一些监听器才能知道调用何时完成以更新我的视图。

答案

调查代表delegates tutorial

或阻止更高级的basic blocks tutorial

从代表开始,

您也可以使用NSNotification NSNotification tutorial但不推荐使用它,因为它广播到每个类,您可能只需要将消息发送到特定的类而不是每个类

另一答案

属于C#世界,我必须去客观c(为了我的工作)。我认为目标c中的事件等效于此实现:

使用您的所有事件方法创建协议:

@protocol MyDelegate <NSObject>
    - (void)myEvent;
@end

在您应该发送事件的班级中,添加:

@interface MyClassWichSendEvent : NSObject

@property (nonatomic, retain) IBOutlet id<MyDelegate> delegate;

@end

在您想要的地方举办活动,例如:

- (IBAction)testEvent:(NSButton*)sender
{
    [self.delegate myEvent];
}

现在在你的监听器类中,你应该监听这样的事件:

将协议添加到您正在收听的课程中

@interface Document : NSDocument<MyDelegate>

在实现中,在init或界面构建器中,您必须链接您的对象实例的委托以监听您的类的自我监听。

在代码中

-(void)awakeFromNib
{
    myObjToListen.delegate = self;    
}
  • 在Interface Builder中 - > IBOutlet从委托到您的listen类。

最后,在您的侦听器类中实现您的方法:

- (void)myEvent
{
    NSLog(@"i have listen this event !");
}

对不起我的英文,我希望能帮助那些从java或C#开始的人。

另一答案

您正在寻找KVO - 关键/价值观察:

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html

http://nachbaur.com/2011/07/29/back-to-basics-using-kvo/

委托+通知适用于对象之间的通信,但是当值发生变化时,它们不会自动发送消息(来自您的问题,这就是您所询问的内容)

另一答案

我想你可能正在寻找NSNotificationCenter,这是一种将消息传递给任何可能正在收听的人的方法。因此,您可以从模型中的事件发出通知,并在控制器中监听它。更简洁的方法可能是使用委托来实现您自己的协议。

另一答案

Objective C使用delegates

这篇文章有一个很好的例子:How do I create delegates in Objective-C?

以上是关于iOS:什么是Objective-C中的事件监听器?的主要内容,如果未能解决你的问题,请参考以下文章

ios里面怎样监听js的事件

在本机 ios 中监听事件

通过代理监听UIScrollView的滚动事件 Objective-C语言

iOS监听H5页面goBack返回事件 & 网页监听APP返回键 (NavigationBackItemInjection)

iOS开发系列--Objective-C 之 KVCKVO

ios/objective-c: 检测 tabbarbutton 按下事件