NSNotificationCenter
第一种,这个只是传值,通过NSNotification获取,当然也可以直接使用obj
注册A
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(enableOrDisableAudio:) name:@"enableOrDisableAudio" object:nil];
- (void)enableOrDisableAudio:(NSNotification *)notification
{
printf("enableOrDisableAudio\n");
BOOL bIsEnableAudio = [[notification object] boolValue];
self.m_bIsEnable = bIsEnableAudio;
[self enableAudio:bIsEnableAudio];
}
响应B
NSNumber *boolNum = [NSNumber numberWithBool:m_bIsSPKOn];
[[NSNotificationCenter defaultCenter] postNotificationName:@"enableOrDisableAudio" object:boolNum];
第二种多值传输(obj)
注册A
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object: nil];
- (void)reachabilityChanged:(NSNotification *)note
{
Reachability *curRech = [note object];
NetworkStatus status = [curRech currentReachabilityStatus];
if (status == NotReachable)
{
[self setStatusBarToShow];
[SVStatusHUD showWithMessage:Localized(@"disconnect from network") duration:KShortDuration];
}
else
{
[self resetStatusBarBlank];
}
}
响应B
Reachability* noteObject = (Reachability*) info;
// Post a notification to notify the client that the network reachability changed.
[[NSNotificationCenter defaultCenter] postNotificationName: kReachabilityChangedNotification object: noteObject];
数组传输,注意响应消息的userInfo一定是NSDictionary类型
- (void) keyboardWillShow:(NSNotification *)aNotification
{
NSDictionary *userInfo = [aNotification userInfo];
}
分享到:
相关推荐
在实际项目中,合理使用`NotificationCenter`能提高代码的灵活性和模块化。然而,过度使用或者不恰当的使用可能会导致逻辑混乱,因此在设计系统时需要谨慎考虑何时使用它,以及如何设计清晰的通知名称和数据结构。 ...
`NotificationCenter`还支持将通知分发到特定的队列,这使得开发者可以控制通知处理的线程安全性和同步性。默认情况下,通知会在主线程上分发,确保UI更新的正确性。 在实际应用中,`NotificationCenter`常用于各种...
在iOS开发中,控制器是构建用户界面的核心组件。它们负责协调模型(数据)和视图(用户看到的界面)之间的交互。在这个“iOS中的控制详解案例”中,我们...在实践中不断磨练,才能更好地理解和掌握iOS中的控制器使用。
- 可以使用`NotificationCenter`监听特定事件并触发动画。 - 对于页面间的过渡动画,可以自定义`UIStoryboardSegue`或使用`UINavigationController`的`animationControllerForOperation:fromViewController:...
在锁屏状态下控制音乐,可以使用`MPNowPlayingInfoCenter`来更新当前播放信息,这样用户在锁屏界面就可以看到音乐的相关信息,并通过控制中心进行操作: ```swift let nowPlayingInfo: [String: Any] = [ ...
这可以通过使用`NotificationCenter`订阅相关的通知来实现,比如`NSApplicationDidResignActiveNotification` 和 `NSApplicationDidBecomeActiveNotification`。 ```swift NotificationCenter.default.addObserver...
- Swift 5.2并没有对`NotificationCenter`做重大改动,但随着语言的演进,它的使用可能变得更加简洁和高效。比如,利用Swift的类型安全特性,可以更好地管理通知名。 通过理解并熟练运用Swift Notification通知,...
例如,使用UIButton创建交互式控件,UISlider实现进度控制,而UILabel则可用于显示时间信息。同时,利用NotificationCenter和KVO(Key-Value Observing)可以监听和响应用户操作。 在实际项目中,开发者可能还需要...
10. **KVO(Key-Value Observing)或NotificationCenter**: 为了在数据模型发生变化时自动更新视图,开发者可以使用KVO或NotificationCenter来监听和传递消息。在这个案例中,当新数据加载完成后,可能会使用这些...
同时,项目可能结合了NotificationCenter或Delegate方法来监听播放状态变化,以便实时更新控制层的显示。 除此之外,项目可能还涉及到了线程管理,以确保视频加载和播放过程不会阻塞主线程,从而保证用户界面的响应...
4. **Notification Center**: 使用NotificationCenter可以广播一个通知,任何监听这个通知的视图控制器都可以接收到数据。这种方法适用于视图控制器层次复杂、关联关系不明确的情况。 在实际项目中,开发者通常会...
在iOS开发中,`...通过`NotificationDemo`这个项目,你可以实际操作并理解这些概念,进一步掌握`NotificationCenter`在iOS应用中的使用。通过实践,你会发现它是实现解耦、模块化设计的一种有效手段。
使用Notification Center,源视图控制器可以发布一个通知,目标视图控制器监听并响应这个通知,从而获取数据。这种方法适用于不直接相关的视图控制器间的通信。 9. **Model对象**: 创建一个公共的Model对象,两...
在iOS开发中,消息中心(NotificationCenter)是一种非常重要的通信机制,它允许对象之间进行解耦的通信。在“消息中心应用实例”中,我们将探讨如何利用消息中心来实现在不同视图之间的平滑切换,从而简化视图间的...
- **数据传递**:在多个`TabBarItem`之间共享数据,可以使用`AppDelegate`、单例模式、`NSUserDefault`、`NotificationCenter`等方法。 总结来说,嵌套`TabBar`是iOS应用设计中的高级技巧,能够为用户提供更丰富的...
可以使用 `NotificationCenter.default.addObserver(forName:object:queue:using:)` 方法。`forName` 参数是你想要监听的通知名称,`object` 参数是发送通知的对象(可选),`queue` 参数指定处理通知回调的线程,`...
- 观察者模式:通过KVO(Key-Value Observing)或者Swift的`NotificationCenter`来监听`tabBarController.selectedIndex`的改变。 6. **嵌入NavigationController** 往往我们会在每个TabBar项的视图控制器前加入...
此外,`UserDefaults`、`NotificationCenter`和`FileManager`等系统服务也是通过单例来提供的。 单例模式的实现通常有两种方式:GCD(Grand Central Dispatch)和懒加载。GCD利用了队列的串行性,保证了单例的线程...
- 在iOS开发中,通常使用`NotificationCenter.default`来获取默认的通知中心实例。 2. **通知的类型** - 本地通知(Local Notification):由应用程序本身创建并触发,即使应用程序不在前台运行也能发送。 - ...
使用代理设计模式,定义一个协议,让源控制器作为目标控制器的代理。通过实现协议的方法,源控制器可以在适当的时候传递数据。这种方式灵活性高,但需要遵循额外的编程约定。 4. **通知中心(NotificationCenter)...