1

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

4

1 回答 1

3

NSTimeZone一个输出参数,所以你需要将一个指针传递给一个指针,像这样:

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

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

于 2013-05-11T01:42:58.163 回答