Я реализовал переходное свойство, как показано ниже, для одной из моделей в моем приложении.Он объявлен в дизайне модели как временное свойство с неопределенным типом.
@property (nonatomic, readonly) NSNumberFormatter *currencyFmt;
Текущий (без предупреждения) impl этого метода доступа:
- (NSNumberFormatter *) currencyFmt
{
[self willAccessValueForKey:@"currencyFmt"];
NSNumberFormatter *fmt = [self primitiveValueForKey:@"currencyFmt"];
[self didAccessValueForKey:@"currencyFmt"];
if (fmt == nil)
{
fmt = [[[NSNumberFormatter alloc] init] autorelease];
[fmt setNumberStyle:NSNumberFormatterCurrencyStyle];
[fmt setLocale:[self localeObject]];
[self setPrimitiveValue:fmt forKey:@"currencyFmt"];
}
return fmt;
}
Вызов *Здесь проблема 1007 *, поскольку документация специально предупреждает против использования этой версии примитивного поиска:
Настоятельно рекомендуется использовать динамически генерируемые средства доступа, а не использоватьэтот метод напрямую (например, primitiveName: вместо primitiveValueForKey: @ "name").Динамические средства доступа гораздо эффективнее и позволяют выполнять проверку во время компиляции.
Проблема заключается в том, что если я пытаюсь использовать primitiveCurrencyFmt
вместо primitiveValueForKey:@"currencyFmt"
, я получаю предупреждение компилятора о том, чтообъект может не отвечать на этот селектор.Все работает нормально во время выполнения, если я просто игнорирую это предупреждение, но предупреждения ужасны, и я не хочу фиксировать какой-либо код, в котором они есть.
Я попытался объявить свойство с помощью @dynamic
и @synthesize
вверху файла и ничего не помогает.Что мне нужно сделать, чтобы использовать рекомендуемые динамические средства доступа без генерации этих предупреждений?
Любая помощь, высоко ценимая.