我不认为我想做的事情是可能的,但是这里有比我更狡猾的人,所以我想我还是问一下……
假设我们有一个 A 类:
@interface A
@property (strong) NSArray *items;
// There'll be methods and stuff too
@end
现在,我们需要替换这个类来改变一些行为方面:
@interface B : A
@property (strong) NSArray *items;
// There'll be methods and stuff too
@end
特别是,我们覆盖了“items”属性,因为我们需要它返回不同的东西。
直到在 B 的实例上调用的方法(该方法在 A 中实现且未被 B 覆盖)尝试访问“self.items”之前,这种方法运行良好。它不是访问它自己的副本,而是访问 B 的覆盖版本,因此会看到意想不到的结果 - 并且在我的真实案例中确实使应用程序崩溃:(
我可以通过重命名 B 中的属性来解决这个问题——但这不再是替代品,这是一种耻辱。
请注意,B 类可以通过 super 访问 A 的属性版本。理想情况下,从 A 类对属性的任何访问也将访问 A 的版本。有什么建议么?例如,在我的吸气剂中,有没有办法知道谁在请求它?
蒂姆