我正在使用优秀的非ARC项目:https://github.com/boredzo/iso-8601-date-formatter
我正在尝试使用此库中的以下方法,该方法在ARC项目中是非ARC的:
- (NSDate *) dateFromString:(NSString *)string timeZone:(out NSTimeZone **)outTimeZone;
我试过了:
group.updatedAt = [formatter dateFromString:someString timeZone:[NSTimeZone localTimeZone]];
group.updatedAt = [formatter dateFromString:someString timeZone:*__autorelease [NSTimeZone localTimeZone]];
group.updatedAt = [formatter dateFromString:someString timeZone:(*__autoreleasing [NSTimeZone localTimeZone]] *);
group.updatedAt = [formatter dateFromString:someString timeZone:[[NSTimeZone localTimeZone] autorelease]];
请注意,我对iOS很新,所以我没有任何内存管理经验。
但是通过所有这些尝试,我收到以下错误消息:
Implicit conversion of an Objective-C pointer to 'NSTimeZone *__autoreleasing *' is disallowed with ARC
那么如何在ARC项目中使用非ARC库的方法呢?
答案 0 :(得分:3)
NSTimeZone
是输出参数,因此您需要将指针传递给指针,如下所示:
NSTimeZone *theTimeZone = nil;
group.updatedAt = [formatter dateFromString:someString timeZone:&theTimeZone];
当函数返回时,theTimeZone
将被设置为函数的输出值。