Apple的文档非常清楚地说明了如何将Objective-C初始化方法转换为Swift初始化器:
“ init”前缀被切掉,成为一个关键字,指示该方法是一个初始化程序。对于以“ initWith”开头的初始化方法,“ With”也将被分割。从中分离出“ init”或“ initWith”的选择器部件的第一个字母变为小写,并且该选择器部件被视为第一个参数的名称。选择器的其余部分也对应于参数名称。
也可以使用工厂类方法作为初始化程序。但是,关于这些选择器名称如何映射到Swift函数的信息很少:
为了保持一致性和简化性,Objective-C工厂方法被映射为Swift中的便利初始化程序。这种映射使它们可以与初始化程序使用简洁明了的语法一起使用。例如,在Objective-C中,您可以像下面这样调用此工厂方法:
目标C
UIColor *color = [UIColor colorWithRed:0.5 green:0.0 blue:0.5 alpha:1.0];
在Swift中,您可以这样称呼它:
迅速
let color = UIColor(red: 0.5, green: 0.0, blue: 0.5, alpha: 1.0)
将Objective-C工厂方法映射到Swift初始化程序的规则是什么?
根据我的经验,下面的规则用于将工厂方法转换为便利的初始化方法。
instancetype
或MyClassName *
initWith
删除了类名后缀(在转换中也可以选择后面跟着“ With” ),方法的其余部分用于第一个参数,首字母小写。
例如,以下转换适用:
[MyClassName myClassNameWithObject:obj] → MyClassName(object: obj)
[MyClassname classNameWithObject:obj] → MyClassName(object: obj)
[MyClassName nameObject:obj] → MyClassName(object: obj)
注意:由于所有这些都映射到同一个swift初始化程序,因此只有一个可用(通常是第一个声明的)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句