无法初始化一个类对象--xcode

时间:2013-08-05 11:10:57

标签: iphone ios objective-c

我是IOS开发的新手。我按照这样编写了实现文件。

   @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.'

感谢您的回答。

2 个答案:

答案 0 :(得分:3)

您是否尝试创建共享单例实例?

在这种情况下,请使用以下代码段:

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

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

    return sharedUtilsInstance;
}

最好将其称为“sharedInstance”,以便共享实例更容易理解。

答案 1 :(得分:0)

删除以下方法

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

将代码写为/....

   +(Utils *)instance
   {

        static Utils *utils = nil;

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

        return utils;
   }