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" 前缀。
基础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" 前缀。