Objective-C:“覆盖”属性 - 替代品?

时间:2013-12-08 04:47:55

标签: ios objective-c cocoa design-patterns properties

我发现“覆盖”属性非常有用。以下是两种情况:

1)UIView子类,CAShapeLayer作为后备存储:

@interface MYView : UIView
    // Redeclare "layer" property of UIView:
    @property (nonatomic, readonly, retain) CAShapeLayer *layer;
@end

@implementation
    // Use CAShapeLayer as backing store
    + (Class)layerClass { return [CAShapeLayer class]; }
@end


2)具有UITableViewController子类的UITableView子类:

@interface MYTableViewController
    // Redeclare "tableView" property of UITableViewController:
    @property (nonatomic, retain) MYTableView *tableView;
@end


在上述情况下我得到了完美的结果,但我宁愿不这样做有两个原因:它被认为是不良形式而且不可预测(它会在很多情况下打破课程)。那么我有什么选择呢?

在上面的情况(1)中,替代方案是重复的类型细化 - 将self.layer投射到我引用它的任何地方CAShapeLayer*。我发现很难相信这被认为是“更清洁”的选择。我错过了什么吗?

0 个答案:

没有答案