我使用类初始化程序来初始化我稍后在代码中使用的一些静态变量。
__strong static NSCharacterSet* _unwantedChars;
@implementation TMGeocoderModel
+(void)initialize{
NSMutableCharacterSet *_alnum = [NSMutableCharacterSet characterSetWithCharactersInString:@","];
[_alnum formUnionWithCharacterSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
_unwantedChars = _alnum;
}
-(id)initWithSearchString:(NSString *)searchString{
self = [super init];
if(self){
NSString* temp = [searchString stringByTrimmingCharactersInSet:_unwantedChars];
}
return self;
}
当我到达下一行代码时
NSString* temp = [searchString stringByTrimmingCharactersInSet:_unwantedChars];
_unwantedChars
已经发布。
在切换到ARC模式之前一切正常,但在ARC中失败并显示以下消息:
- [CFCharacterSet characterIsMember:]:发送到解除分配的实例的消息0x11247330
有没有办法在类方法中初始化对象,以便它们不会被释放?
更新 嗯这完全是我的错误,解决方案相当简单。
在构建设置 - > Objective-C自动引用计数,仅 DEBUG 配置设置为YES,而其他配置设置为NO。
将全部更改为YES,一切正常。
答案 0 :(得分:0)
NSMutableCharacterSet *_alnum
的范围仅适用于您的初始化方法。全局声明它。