gpt4 book ai didi

ios - 有代表的单例?

转载 作者:行者123 更新时间:2023-12-01 15:59:40 26 4
gpt4 key购买 nike

我有一些 bluetooth在所有 View 中都需要处于事件状态的类。
这意味着,我必须从不同的 View 调用此类中的函数,并且还必须从此类获取代表到不同的 View 。

所以,我必须初始化一次以创建连接,然后,我必须从不同的 View (类)再次使用它并注册以从中获取通知。

我在想一个 singleton ,他将创建该蓝牙类的实例,我可以从任何地方访问他。
但是,我也希望任何 View 都可以获得 delegates从中 。

我该怎么做?
我已阅读 What should my Objective-C singleton look like?

但也许 singleton不是我需要的吗?
您如何创建一个始终存在的类,并注册以从任何地方获取代表?
(如何使用 app delegate 类来完成?)

最佳答案

不久前我有过类似的查询

问题 : 多个类需要接收来自单个实例的委托(delegate)调用

解决方案 :我使用了 sharedInstance 、 delegates 和 NSNotifications 的组合来处理这个问题

共享实例

+ (SomeBluetoothClass *) sharedInstance {
static dispatch_once_t once;
static SomeBluetoothClass *sharedInstance;
dispatch_once(&once, ^{
sharedInstance = [[self alloc] init];
});
return sharedInstance;
}

代表
@property (weak, nonatomic) id <SomeBluetoothClassDelegate> delegate;

由于委托(delegate)一次只能响应一个类。根据您的逻辑分配重点类(class)。然后,每当您想向所有人发送信息时,都可以使用 sharedInstance 中的 NSNotificationCenter 发送信息。通过使用 NSNotifications 的 userInfo 字典发送信息

通知
[[NSNotificationCenter defaultCenter] postNotificationName:SomeBluetoothClassNotification
object:self
userInfo:info];

将 SomeBluetoothClass 的结构建模为线程安全的,并与委托(delegate)一起处理所有通知,它应该可以正常工作。

关于ios - 有代表的单例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28579059/

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