Objective-C和Swift中初始化方法比较
2015-12-22 00:03
561 查看
众所周知,OC和Swift语法差异巨大,在日常的编码过程中,无意中对比了一下二者的对象初始化方法,加深了对二者的理解,特来分享
首先来看OC的按钮初始化方法:
通过代码我们可以看到,OC中方法的结构如下:最前面是方法的类型(对象方法or类方法),然后是返回值类型,然后是参数列表,在参数列表中,参数类型在前,参数名在后.由于OC中是没有’重载’这个概念的,所以只能根据不同的参数名来区分不同的方法.返回值是 id 类型或是instanceType类型
然后我们来用Swift仿写一下这个方法:
可以看到,首先Swift中的初始化方法是没有返回值的,其次,方法的最前面没有 func 关键字. Swift中是有重载概念的,根据参数类型和返回值的不同来区分不同的方法.
个人理解是,在Swift中,只有最开始是init的方法,系统才认为此方法是初始化方法,并且不能加func关键字,而OC中,是通过返回值来确定的,对于方法名的命名并没有强制的要求
首先来看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中,是通过返回值来确定的,对于方法名的命名并没有强制的要求
相关文章推荐
- Objective-C:笔记:语句和表达式
- ObObjective-C:笔记:Block 代码块
- ObObjective-C:笔记:3
- ObObjective-C:笔记:6
- ObObjective-C:笔记:7
- ObObjective-C:笔记:8
- ObObjective-C:笔记:9
- ObObjective-C:笔记:内存管理
- OObjective-c CALayer 动画
- objective-c 转场动画
- OBjective-c 弹簧效果
- objective-c 逐帧动画
- Object-C 一些关键字的理解 @synchronized、__block、class等。。。
- “object name conflicts in archive”的解决办法
- Mybatis3源码分析(12)-Sql解析执行-MetaObject
- 【Objective-C学习记录】第二十天
- Android中两个activity之间传递list<object>
- 关于Objective-C 错误代码 Expression is not assignable 引发的问题
- Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks程序(Python)配置问题总结
- Objective-c语言_协议