当前位置:  开发笔记 > IOS > 正文

在swift中获取单例实例

如何解决《在swift中获取单例实例》经验,为你挑选了1个好方法。

我在objective-c中编写了一个类来为我提供一个名为helper的类的实例,它可以帮助我做很多不同的事情.

static Helper *objHelper = nil;

@implementation Helper

- (id)init {
    self = [super init] ;
    return self;
}

///- Return Helper Singleton Instance
+ (Helper *) getHelperInstance;
{
    @synchronized (objHelper) {
        if ( !objHelper || objHelper == NULL ) {
            objHelper = [[Helper alloc] init];
        }
        return objHelper;
    }
}

我试过快速写它,但我不认为我做对了:

var objHelper : Helper?


override init() {
    super.init()

}

func getHelperInstance() ->Helper{

    synchronizd(objHelper == nil) {

        if objHelper == nil {

            objHelper = Helper()
        }
    }
    return objHelper!

}

并处理同步:

func synchronizd(lock: AnyObject, closure:()->()) {
    objc_sync_enter(lock)
    closure()
    objc_sync_exit(lock);
}

当我使用objective-c类时,我在我的课程中使用它:

var objHelper = Helper()
objHelper  = Helper.getHelperInstance()

但是当我在swift中写它时我必须传递参数:

var objHelper = Helper()
objHelper  = Helper.getHelperInstance(objHelper)()

我转变为快速错误的是什么?为什么它要求(objHelper)()它在客观c代码中的位置它没有要求这样做!我只需要使我的swift代码运行与我的objective-c代码相同.

更新:我要求以另一种方式而不是结构或其他方式做单例.我的代码在swift中的一些编辑工作正常,这就是要求的东西.



1> EpicSyntax..:

在Swift中它非常简单,保持共享实例与类本身内部的类引用保持不变,如下所示:

class Helper {
    static let sharedInstance = Helper()

    func someMethod() {
        print("Bla bla")
    }
}

并在不同的类中使用它的方法,如下所示:

Helper.sharedInstance.someMethod()

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有