NSNotificationCenter 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
应用程序的通知中心。
[Foundation.Register("NSNotificationCenter", true)]
public class NSNotificationCenter : Foundation.NSObject
type NSNotificationCenter = class
inherit NSObject
- 继承
- 派生
- 属性
注解
NSNotificationCenter 是一个中心,用于侦听应用程序中的广播消息和发布广播消息。 发布的消息是同步的。
NSNotificationCenter.DefaultCenter 在应用程序中起着核心作用,因为这是针对感兴趣的系统级别事件发布系统通知的位置。
发布通知是一个同步过程,这意味着调用通知中心上的 Post 消息之一将阻止执行,直到所有通知处理程序完成运行。
通知发布在与调用线程相同的线程上,这可能会产生意外的影响。 如果需要从后台线程传递通知,请使用 BeginInvokeOnMainThread(Action) 方法将发布包装到主线程上调用的委托中。
订阅通知时,可以通过指定通知名称 (或 null 来侦听发布到通知中心) 的所有通知,从而仅订阅某种类型的通知。 也可以仅订阅特定对象发出的通知。 这可用于筛选收到的通知量。
通知通常是承载在某些类中的 NSString 字段,例如 Objective-C UITextViewTextDidChangeNotification 在类 UITextView 中找到为 TextDidChangeNotification。 为方便起见,有采用 C# 字符串的重载。
若要注册通知,可以使用 AddObserver 方法。 建议使用这些方法的 C# 版本,因为可以直接将委托、lambda 和方法直接连接到代码中。 在此类中使用任何执行 Action<NSNotification;> 参数的 AddObserver 方法时,AddObserver 将返回令牌。 然后,当想要停止侦听特定事件时,此令牌将用作 RemoveNotification 的参数。
NSObject notificationToken;
void Setup ()
{
notificationToken = NSNotificationCenter.DefaultCenter.AddObserver (FooBar.ClockNotification, OnClockChange);
}
void OnClockChange (NSNotification notification)
{
Console.WriteLine ("The ClockNotification message was posted");
}
void Teardown ()
{
NSNotificationCenter.DefaultCenter.RemoveObserver (notificationToken);
}
从 MonoTouch 5.4 开始,对返回的通知令牌调用 Dispose 也会为你删除观察程序,使代码更短。 例如:
NSObject notificationToken;
void Setup ()
{
notificationToken = NSNotificationCenter.DefaultCenter.AddObserver (FooBar.ClockNotification, OnClockChange);
}
void OnClockChange (NSNotification notification)
{
Console.WriteLine ("The ClockNotification message was posted");
}
void Teardown ()
{
notificationToken.Dispose ();
}
同样,如果对象实现 T:System.IDisposable (包括派生自NSObject) 必须在函数中Dispose
调用 RemoveObservers(IEnumerable<NSObject>) 或 notificationToken.Dispose()
的任何对象:
class MyClass : NSObject
{
private NSObject notificationToken;
MyClass()
{
notificationToken = NSNotificationCenter.DefaultCenter.AddObserver(notificationName, NotificationHandler);
}
void NotificationHandler(NSNotification notification)
{
// ... etc ...
}
private bool disposed = false;
override protected void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
notificationToken.Dispose();
}
disposed = true;
base.Dispose();
}
}
}
构造函数
NSNotificationCenter() |
不带参数初始化此类的新实例的默认构造函数。 |
NSNotificationCenter(IntPtr) |
创建非托管对象的托管表示形式时使用的构造函数;由运行时调用。 |
NSNotificationCenter(NSObjectFlag) |
用于调用派生类的构造函数,以跳过初始化并仅分配 对象。 |
属性
Class |
应用程序的通知中心。 (继承自 NSObject) |
ClassHandle |
此类的句柄。 |
DebugDescription |
此对象的开发人员有意义的说明。 (继承自 NSObject) |
DefaultCenter |
默认通知中心、系统通知和系统级事件将发布到此通知中心。 |
Description |
对象的说明,即 ToString 的 Objective-C 版本。 (继承自 NSObject) |
Handle |
处理指向非托管对象表示形式的 (指针) 。 (继承自 NSObject) |
IsDirectBinding |
应用程序的通知中心。 (继承自 NSObject) |
IsProxy |
应用程序的通知中心。 (继承自 NSObject) |
RetainCount |
返回对象的当前 Objective-C 保留计数。 (继承自 NSObject) |
Self |
应用程序的通知中心。 (继承自 NSObject) |
Superclass |
应用程序的通知中心。 (继承自 NSObject) |
SuperHandle |
用于表示此 NSObject 基类中方法的句柄。 (继承自 NSObject) |
Zone |
应用程序的通知中心。 (继承自 NSObject) |
方法
扩展方法
ObjectDidBeginEditing(NSObject, INSEditor) |
应用程序的通知中心。 |
ObjectDidEndEditing(NSObject, INSEditor) |
应用程序的通知中心。 |
GetValidModes(NSObject, NSFontPanel) |
应用程序的通知中心。 |
ValidateToolbarItem(NSObject, NSToolbarItem) |
应用程序的通知中心。 |
GetDebugDescription(INSObjectProtocol) |
应用程序的通知中心。 |
AcceptsPreviewPanelControl(NSObject, QLPreviewPanel) |
应用程序的通知中心。 |
BeginPreviewPanelControl(NSObject, QLPreviewPanel) |
应用程序的通知中心。 |
EndPreviewPanelControl(NSObject, QLPreviewPanel) |
应用程序的通知中心。 |
GetAccessibilityCustomRotors(NSObject) |
获取适用于 |
SetAccessibilityCustomRotors(NSObject, UIAccessibilityCustomRotor[]) |
设置适用于 |