基类接口:
@interface Base : NSObject
@property (nonatomic, readonly, getter=getPriceForListing) double_t priceForListing;
@end
基类实施:
@implementation Base
-(double_t)getPriceForListing
{
if (self.listPriceLow > 0 && self.listPriceHigh > 0)
{
return self.listPriceLow;
}
else if (self.listPriceLow > 0)
{
return self.listPriceLow;
}
else if (self.listPriceHigh > 0)
{
return self.listPriceHigh;
}
else
{
return self.currentPrice;
}
}
@end
子类接口:
@interface Subclass : Base
@end
子类实施:
@implementation Subclass
@dynamic priceForListing;
@end
如何使用子类:
Subclass *sub = [[Subclass alloc] init];
NSLog(@"%@", sub.priceForListing);
我遇到的问题是sub.priceForListing
总是返回零,并且永远不会调用基类getter,至少没有在那里遇到断点。
答案 0 :(得分:4)
你定义了" getter"作为getPriceForListing
,但正尝试使用priceForListing
访问它。只需省略自定义名称。
重命名" getter"方法priceForListing
。
如果没有后备实例变量,IOW永远不会设置,您可以将其指定为readonly
。
如评论中所述:删除:@dynamic priceForListing;
。
仅供参考:在Objective-C / Cocoa中," get"对于通过引用返回值的方法,按照约定保留前缀。吸气者没有"得到"前缀。