Ios Swift:重写子类中的Objective-c扩展(匿名)属性
我花了相当多的时间来弄清楚这一点,但没有发现任何成功 简单地说,我需要一个objective c类的swift子类,以便能够覆盖扩展名内.m文件中声明的某个属性。我该怎么做?本质上,该属性需要替换为自定义子类Ios Swift:重写子类中的Objective-c扩展(匿名)属性,ios,objective-c,swift,Ios,Objective C,Swift,我花了相当多的时间来弄清楚这一点,但没有发现任何成功 简单地说,我需要一个objective c类的swift子类,以便能够覆盖扩展名内.m文件中声明的某个属性。我该怎么做?本质上,该属性需要替换为自定义子类 @interface SomeClass : NSObject { } @end //SomeClass.m @interface SomeClass () @property (nonatomic, strong) UIScrollView scrollView; @end //S
@interface SomeClass : NSObject
{
}
@end
//SomeClass.m
@interface SomeClass ()
@property (nonatomic, strong) UIScrollView scrollView;
@end
//Swift class
class NewClass: SomeClass {
let scrollViewSubclass = MyScrollView()
override var scrollView: UIScrollView! {
return scrollViewSubclass
}
}
像那样的。。只是不知道怎么做。我甚至不能覆盖scrollView,因为swift子类不知道它存在 您不能这样做,因为这会违反LSP-但只要您要使用的子类是UIScrollView的子类,那么您就可以将该子类的实例分配给现有的propertySo,而无需进入objective c文件,我将如何分配该属性。@Paulw11我可以这样看待该属性:var newScrollView:UIScrollView{return self.valueForKey(“scrollView”)as!UIScrollView}但问题是我如何用scrollView的子类替换该属性,而不必进入.m文件是的,您可以这样做。您不能直接访问它,因为它是一种私有财产。我之所以这么说,是因为Objective-C没有私有属性,但是你可以通过在.h中省略它来隐藏它,避免被随意检查