iOS 的 NSNotificationCenter 中哪些通知由系统自动发送

2025-02-26 08:38:14
推荐回答(2个)
回答1:

系统里定义了许多 xxxNotification 名称,其实只要打开 Open Quickly,输入
nsnotification 就可以看到许多以 Notification 结尾的变量定义,由变量名称也能理解在什么时候会激发什么事件,一般都是向
[NSNotificationCenter defaultCenter] 通知的。

以下是部分例子:

// Developer/Library/Frameworks/SenTestingKit.framework/Headers/SenTestCaseRun.h
SENTEST_EXPORT NSString * const SenTestCaseDidStartNotification;
SENTEST_EXPORT NSString * const SenTestCaseDidStopNotification;
SENTEST_EXPORT NSString * const SenTestCaseDidFailNotification;

// Developer/Library/Frameworks/SenTestingKit.framework/Headers/SenTestDistributedNotifier.h
SENTEST_EXPORT NSString * const SenTestNotificationIdentifierKey;

// Developer/Library/Frameworks/SenTestingKit.framework/Headers/SenTestSuiteRun.h
SENTEST_EXPORT NSString * const SenTestSuiteDidStartNotification;
SENTEST_EXPORT NSString * const SenTestSuiteDidStopNotification;

// System/Library/Frameworks/Accounts.framework/Headers/ACAccountStore.h
ACCOUNTS_EXTERN NSString * const ACAccountStoreDidChangeNotification NS_AVAILABLE(NA, 5_0);

// System/Library/Frameworks/AssetsLibrary.framework/Headers/ALAssetsLibrary.h
extern NSString *const ALAssetsLibraryChangedNotification __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_0);

// System/Library/Frameworks/AVFoundation.framework/Headers/AVAudioSession.h
AVF_EXPORT NSString *const AVAudioSessionInterruptionNotification NS_AVAILABLE_IOS(6_0);
AVF_EXPORT NSString *const AVAudioSessionRouteChangeNotification NS_AVAILABLE_IOS(6_0);
AVF_EXPORT NSString *const AVAudioSessionMediaServicesWereLostNotification NS_AVAILABLE_IOS(7_0);
AVF_EXPORT NSString *const AVAudioSessionMediaServicesWereResetNotification NS_AVAILABLE_IOS(6_0);
AVF_EXPORT NSString *const AVCaptureDeviceWasConnectedNotification NS_AVAILABLE(10_7, 4_0);

// System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureDevice.h
AVF_EXPORT NSString *const AVCaptureDeviceWasDisconnectedNotification NS_AVAILABLE(10_7, 4_0);
AVF_EXPORT NSString *const AVCaptureDeviceSubjectAreaDidChangeNotification NS_AVAILABLE_IOS(5_0);

// System/Library/Frameworks/AVFoundation.framework/Headers/AVCaptureInput.h
AVF_EXPORT NSString *const AVCaptureInputPortFormatDescriptionDidChangeNotification NS_AVAILABLE(10_7, 4_0);

给你一个知乎上和你相同问题的链接吧:https://www.zhihu.com/question/30640348/answer/48847551

回答2:

  1. 正常情况下系统是不会发通知的

  2. 你看通知中心收到的通知,基本都是某一个应用(手机安装的)收到的通知   

  3. 系统的通知一般会在设置,系统的更新提醒