gpt4 book ai didi

ios - 为 NSNotificationCenter 添加乘法观察者

转载 作者:行者123 更新时间:2023-11-29 01:26:36 25 4
gpt4 key购买 nike

在我的项目中,我计划使用NSNotificationCenter 进行类间通信。因此我打算在 NSNotificationCenter 中添加很多观察者。我想知道这是否安全?或者换句话说,这是一个好的做法吗?其实我现在正在重构我的代码,我想把不应该在类中完成的方法整理出来。事实上,我在 UIViewController 中有很多警报 Controller ,每次调试时它真的很困扰我。现在,我只是取出所有那些警报 Controller 并将它们包装在另一个类中。对于 UIAlertAction 中的回调 block ,我正在向 UIViewController 发送通知。这就是我添加大量观察员的原因。任何建议,将不胜感激。非常感谢!

最佳答案

从本质上讲,对于同一个通知有多个观察者,或者一个类观察多个通知,这并没有错。

关于使用通知传递有关 UIAlertActions 的信息的具体问题,请不要这样做。使用一个类来隐藏创建具有特定操作的特定 UIAlertViewController 实例的样板并没有错。但是,此类的 API 应该为每个特定警报提供工厂方法,并且这些方法应该将 block 作为参数来表示操作处理程序。 block 的主体将在调用警报的 UIViewController 中定义。

示例

@interface CustomAlertsFactory : NSObject

+ (void)presentDeleteConfirmationAlertFromViewController:(UIViewController *)viewController
withConfirmAction:(void (^)(UIAlertAction *action))confirmHandler
cancelAction:(void (^)(UIAlertAction *action))cancelHandler;

@end

该方法的实现将创建一个定制为删除确认的 UIAlertViewController。确认和取消操作将配置为使用作为参数传递的 block 。

在 View Controller 端,假设您允许编辑表格。在 tableView:commitEditingStyle:forRowAtIndexPath: 中,您将抛出如下警报:

[CustomAlertsFactory
presentDeleteConfirmationAlertFromViewController:self
withConfirmationAction:^(UIAlertAction *a) {
[tableView deleteRowsAtIndexPaths:@[indexPath]
withRowAnimation:UITableViewRowAnimationFade];

[self dismissViewControllerAnimated:YES completion:NULL];
}
cancelAction:^(UIAlertAction *a) {
[self dismissViewControllerAnimated:YES completion:NULL];
}
];

关于ios - 为 NSNotificationCenter 添加乘法观察者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33930474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com