Objective-C和Swift中初始化方法比较

时间:2022-08-30 13:57:23

众所周知,OC和Swift语法差异巨大,在日常的编码过程中,无意中对比了一下二者的对象初始化方法,加深了对二者的理解,特来分享

首先来看OC的按钮初始化方法:

- (id) initWithTitle: (NSString *) title image: (UIImage *) image
highlightedImage: (UIImage *) highlightedImage;

通过代码我们可以看到,OC中方法的结构如下:最前面是方法的类型(对象方法or类方法),然后是返回值类型,然后是参数列表,在参数列表中,参数类型在前,参数名在后.由于OC中是没有’重载’这个概念的,所以只能根据不同的参数名来区分不同的方法.返回值是 id 类型或是instanceType类型

然后我们来用Swift仿写一下这个方法:

init(titleText: String, image: UIImage,highlightedImage: UIImage){

    super.init()
    //do something
}

可以看到,首先Swift中的初始化方法是没有返回值的,其次,方法的最前面没有 func 关键字. Swift中是有重载概念的,根据参数类型和返回值的不同来区分不同的方法.
个人理解是,在Swift中,只有最开始是init的方法,系统才认为此方法是初始化方法,并且不能加func关键字,而OC中,是通过返回值来确定的,对于方法名的命名并没有强制的要求