Singleton 的替代方法是什么

What is the alternative way for Singleton

我有一个工作正常的单吨,但我不想使用单例代替任何替代的最佳方式 找到我的参考代码

Myclass.h

+ (instancetype)shareInformation;

Myclass.m

+ (instancetype)shareInformation
{
    static Myclass *manager;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{

        manager = [[Myclass alloc] init];       
    }); 
    return manager;
}

MyNextClass.m

[[Myclass shareInformation] methodofMyclass:^(NSDictionary *results, NSError *error) {

    //my code
}];

我有一个 class Myclass,我在其中使用单例来初始化 manager = [[Myclass alloc] init];我在其他 class MyNextClass 中调用它,但我不想这样做

您可以使用单例,也可以使用普通实例,由您决定。单例的主要好处之一是您可以在任何地方毫无困难地获得对它的引用。

您始终可以创建一个 class,然后将其引用传递到您想要使用它的任何地方。例如,在您的视图控制器中创建它,确保在您的后续视图控制器中创建它的 属性,然后将相同的引用传递给新的视图控制器。

如果这是您想要完成的并且您只需要一个实例,那么最好使用单例。

我猜您想避免使用单例,因为它被认为是一种反模式。
一种解决方案是使用依赖项注入容器来连接您的应用程序并将其配置为将您的对象解析为单个实例。
我不熟悉 ios 开发,但 Typhoon 看起来很受欢迎。

对于 "global" 数据,另一种选择是使用 AppDelegate。您可以在 AppDelegate 本身中放置简单的属性,或者定义一个 属性(或显式 "getter" 方法),其中 returns 指向更复杂的 "global" 对象的指针。

请注意,许多人认为 "bad form" 以这种方式使用 AppDelegate,但实际上并没有那么糟糕,只是访问 AppDelegate 本身有点笨拙。 (这让那些确信自己知道 "separation of concerns" 真正 意味着什么的人感到不安。)