Как создать синглтон-класс в задаче C - PullRequest
38 голосов
/ 21 марта 2011

Как я могу создать одноэлементный класс в Objective C?

Ответы [ 14 ]

0 голосов
/ 18 мая 2018

Это правильный способ создания одноэлементного класса

mySingletonClass.h

@interface mySingletonClass : NSObject

 + (mySingletonClass*)sharedInstance;
 @property (nonatomic, assign)BOOL      useToken;



mySingletonClass.m

@implementation mySingletonClass

static mySingletonClass *_sharedInstance = nil;


+ (mySingletonClass*)sharedInstance
{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _sharedInstance = [[self alloc] init];

    });

    return _sharedInstance;
}

Как получить доступ к свойствам или методам одноэлементного класса в другом классе

anotherClass.m

Bool isTokenValid = [mySingletonClass sharedInstance].useToken;
0 голосов
/ 20 февраля 2018
+ (id)sharedInstance {
    static dispatch_once_t pred = 0;
    __strong static id _sharedObject = nil;
    dispatch_once(&pred, ^{
        _sharedObject = [[self alloc] init];
    });
    return _sharedObject;
}

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

И добавьте .h

+ (id)sharedInstance;

PD: ваш класс должен наследоваться от NSObject.

Не забывайте всегда вызывать sharedinstance, когда вы хотите его использовать, а непозвонить в init.

0 голосов
/ 08 ноября 2017

В swift 1.2 или позже, если имя класса, например: singletonVC

class singletonVC {

    static let sharedMySingleton = singletonVC()

    private init(){ 
    }

}

Реализация:

singletonVC.sharedMySingleton.yourFunctionName
0 голосов
/ 23 октября 2017

Пожалуйста, попробуйте ниже код.

@implementation AppShared
static AppShared *singletonInstance;

+ (AppShared*)Instance{
if (singletonInstance == nil) {
    singletonInstance = [[super alloc] init];
}
return singletonInstance;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...