如何在Objective-C中创建类的全局实例

时间:2014-07-04 16:36:47

标签: objective-c object global

我对Objective C很新,偶然发现了这个问题。 如何在Objective C中创建一个可以从多个类和主函数访问的类的全局实例?

3 个答案:

答案 0 :(得分:2)

你可以这样做:

+(MyClass *) sharedInstance
{
    static id sharedInstance = nil;
    @synchronized(self)
    {
        if (!sharedInstance)
        {
            sharedInstance = [[MyClass alloc] init];
        }
        return sharedInstance;
    }
}

只需通过以下一行代码访问对象:

[MyClass sharedInstance]

希望它有所帮助!!快乐编码:)

答案 1 :(得分:1)

向您的类添加一个返回此特定实例的方法。

最常见的情况是单身人士。您还可以查找"共享实例"。

答案 2 :(得分:-1)

您可以使用单例,导入.pch文件中的.h文件,方法是将每个文件导入:

YourClass.h:

@interface YourClass : NSObject

/**
 * Method to get the singleton instance
 * @return Instance of YourClass 
 */
+ (YourClass *)instance;
@end

YourClass.m:

#import "YourClass.h"

@interface YourClass(){

}
@end

#pragma mark -

@implementation YourClass

- (id)init{
    //prevents normal inits
    return nil;
}

+ (YourClass *)instance
{
    static YourClass *instance = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        instance = [[self alloc] initSingelton];
    });
    return instance;
}

- (id)initSingelton{
    if (self = [super init]) {
        //do stuff here
        return self;
    }
    return nil;
}