Objective-C 基础 Class 属性 自定义 Getter 未从子类中调用

Objective-C Base Class Property Custom Getter Not Being Called From Subclass

基础Class接口:

@interface Base : NSObject

@property (nonatomic, readonly, getter=getPriceForListing) double_t priceForListing;

@end

基础Class实现:

@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

子class接口:

@interface Subclass : Base

@end

子class 实现:

@implementation Subclass

@dynamic priceForListing;

@end

如何使用subclass:

Subclass *sub = [[Subclass alloc] init];
NSLog(@"%@", sub.priceForListing);

我在这里遇到的问题是 sub.priceForListing 总是 returns 零并且基数 class getter 永远不会被调用,至少没有命中断点在那里。

您将 "getter" 定义为 getPriceForListing,但正在尝试使用 priceForListing 访问它。只需省略自定义名称即可。

将 "getter" 方法重命名为 priceForListing

如果没有支持实例变量,IOW 永远不会设置它,您可以将其指定为 readonly

如评论中所述:删除:@dynamic priceForListing;.

仅供参考:在 Objective-C/Cocoa 中,"get" 前缀按照约定保留给那些 return 引用值的方法。吸气剂没有 "get" 前缀。