No Visible @ interface fro 'NSObject', declares the selector 'alloc'
我正在尝试创建一个单例。这组代码旨在建立一个settingsManager单例。
我试图分配它,但不断地抛出一个错误
它引发错误:nsObject没有可见的@interface。声明选择器"alloc"
有人知道怎么了吗?
事先谢谢!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | //In my .h file I have +(settingsManager*)getInstance; -(void)printSettings; //In My .m file is---- static settingsManager *theInstance = nil; //Instance Method +(settingsManager*)getInstance { (theInstance == nil) { [[self alloc] init];//Im getting"expression result unused" here } return theInstance; } -(id)alloc { theInstance = [super alloc];<------//getting the big error here return theInstance; } -(id)init { if (self = [super init]) { } return self; } (void)printSettings { NSLog(@"Hello"); } |
您不应该对
1 2 3 4 5 6 7 8 9 | + (instancetype)sharedInstance { static SettingsManager *sharedInstance = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedInstance = [[settingsManager alloc] init]; }); return sharedInstance; } |
如果你对更多的阅读感兴趣,我建议你使用这个链接。
我还建议您阅读Objective-C的推荐编码指南。
< BR>
实例化InstanceType是一个上下文关键字,可以用作结果类型,以指示方法返回相关的结果类型。与ID不同,InstanceType只能用作方法声明中的结果类型。更多详细信息。
调度一次正如这里所解释的,dispatch_Once()是同步的,允许您只执行一段代码。
这不是实现单例的正确方法。在您的实现中有许多单一的和潜在的风险位。但是,这个错误是因为