我使用类初始化器来初始化我稍后在代码中使用的一些静态变量。
__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:]: message sent to deallocated instance 0x11247330
有没有办法在类方法中初始化对象,这样它们就不会被释放?
更新: 这完全是我的错误,解决方案相当简单。
在Build Settings -> Objective-C Automatic Reference Counting中,只有DEBUG配置设置为 YES,而其他配置设置为 NO。
全部改为YES,一切正常。