【发布时间】:2016-05-04 11:49:56
【问题描述】:
当我在 Singleton 初始化中为 CMRequestManager 类的属性“myLocal”赋值时,我得到了一个 SIGABRT。怎么了?
@interface CMRequestManager (private)
@property (nonatomic,strong) NSString* myLocal;
@end
@implementation CMRequestManager
#pragma mark Singleton Methods
+ (id)Manager {
static CMRequestManager *sharedMyManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedMyManager = [[self alloc] init];
sharedMyManager.myLocal = @"test test"; //SIGABRT !!!!
});
return sharedMyManager;
}
- (id)init {
if (self = [super init]) {
}
return self;
}
@end
编辑:
好的,我找到了解决方案:将头文件中的属性“myLocal”移到类扩展之外:
@interface CMRequestManager
@property (nonatomic,strong) NSString* myLocal;
@end
这项工作,但我不明白为什么。所以问题仍然存在:我之前的代码有什么问题?
【问题讨论】:
-
把这行sharedMyManager = [[self alloc] init];换成sharedMyManager = [[CMRequestManager alloc] init];乙>。只是猜测,请尝试。
-
我尝试过同样的错误
标签: ios objective-c singleton sigabrt class-extensions