Как подавить выброс одиночного объекта? - PullRequest
0 голосов
/ 07 апреля 2011

Как убедиться, что мой одноэлементный объект не был выпущен по ошибке, когда над проектом работают несколько разработчиков? Можем ли мы справиться с этой моей программой?

Ответы [ 2 ]

3 голосов
/ 07 апреля 2011

Согласно документации Apple по Создание экземпляра синглтона :

static MyGizmoClass *sharedGizmoManager = nil;

+ (MyGizmoClass*)sharedManager
{
    if (sharedGizmoManager == nil) {
        sharedGizmoManager = [[super allocWithZone:NULL] init];
    }
    return sharedGizmoManager;
}

+ (id)allocWithZone:(NSZone *)zone
{
    return [[self sharedManager] retain];
}

- (id)copyWithZone:(NSZone *)zone
{
    return self;
}

- (id)retain
{
    return self;
}

- (NSUInteger)retainCount
{
    return NSUIntegerMax;
}

- (oneway void)release
{
    //do nothing
}

- (id)autorelease
{
    return self;
}

Возможно, вы также захотите прочитать ответы на: Как должен выглядеть мой синглтон Objective-C

1 голос
/ 07 апреля 2011

В настоящее время это будет гарантировать, что синглтон не будет выпущен:

// This function is empty, as we don't want to let the user release this object.
- (oneway void)release {

}

//Do nothing, other than return the shared instance - as this is expected from autorelease.
- (id)autorelease {
    return self;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...