2013-08-05 5 views
0

Я новичок в разработке IOS. Я написал файл реализации следующим образом.Не удается создать объект класса - xcode

@implementation Utils 

    +(id)alloc 
    { 
     return [self instance]; 
    } 

    +(Utils *)instance 
    { 

     static Utils *utils = nil; 

     if (!utils) { 
      utils = [self init]; 
     } 

     return utils; 
    } 

    -(Utils *)init 
    { 
     self = [super init]; 
     if (self) { 
      mConst = [Constants instance]; 
      mCONT_REGEXP = [mConst CONT_REGEXP]; 
     } 
     return self; 
    } 

Когда я называю

[Utils instance]; 

я получил ошибку следующее: Как это

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** +[Utils<0xbff54> init]: cannot init a class object.' 

Спасибо за ваши ответы.

+0

Ваша проблема - (Utils *) init здесь – IronManGill

ответ

3

Вы пытаетесь создать общий одноэлементный экземпляр?

В этом случае используйте следующий фрагмент кода:

+ (id)sharedInstance; 
{ 
    static dispatch_once_t onceToken; 
    static Utils *sharedUtilsInstance = nil; 

    dispatch_once(&onceToken, ^{ 
     sharedUtilsInstance = [[Utils alloc] init]; 
    }); 

    return sharedUtilsInstance; 
} 

Лучше назвать это «sharedInstance», так что это более понятно экземпляр разделяется.

+0

Спасибо за ваш ответ. – Kirubachari

0

удалить ваш следующий метод

+(id)alloc 
    { 
     return [self instance]; 
    } 

И писать код как/....

+(Utils *)instance 
    { 

     static Utils *utils = nil; 

     if (!utils) { 
      unit = [[unit alloc] init]; 
     } 

     return utils; 
    } 
Смежные вопросы