Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift:重写子类中的Objective-c扩展(匿名)属性_Ios_Objective C_Swift - Fatal编程技术网

Ios Swift:重写子类中的Objective-c扩展(匿名)属性

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

我花了相当多的时间来弄清楚这一点,但没有发现任何成功

简单地说,我需要一个objective c类的swift子类,以便能够覆盖扩展名内.m文件中声明的某个属性。我该怎么做?本质上,该属性需要替换为自定义子类

@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中省略它来隐藏它,避免被随意检查