在ARC项目中使用非ARC库中的方法?

时间:2013-05-11 01:39:03

标签: ios objective-c cocoa-touch automatic-ref-counting

我正在使用优秀的非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库的方法呢?

1 个答案:

答案 0 :(得分:3)

NSTimeZone是输出参数,因此您需要将指针传递给指针,如下所示:

NSTimeZone *theTimeZone = nil;
group.updatedAt = [formatter dateFromString:someString timeZone:&theTimeZone];

当函数返回时,theTimeZone将被设置为函数的输出值。