我发现“覆盖”属性非常有用。以下是两种情况:
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*
。我发现很难相信这被认为是“更清洁”的选择。我错过了什么吗?