我是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.'
感谢您的回答。
答案 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;
}