写在前面
用Swift来做项目也有一段时间了,与Objective-c 相比,直观的感觉是用Swift写代码更快,更流畅。但是不包括写要和c连接的代码,如果要写和c相关的,还是用OC比较好,所以现在的代码基本上是用OC来写一层c的转换层。
下面是Swift和OC的知识点对比,算是对这一段时间用到的知识的梳理。
Swift Extensions vs OC categories
Swift 中的扩展可以:
- 添加计算型属性和计算型静态属性 (注意: 只能是计算属性的变量, 普通变 量不能添加)
- 定义实例方法和类型方法
- 提供新的构造器
- 定义下标
- 定义和使用新的嵌套类型
- 使一个已有类型符合某个协议
- 不能重载以前类的方法
extension Int {
mutating func square() {
self = self * self
}
}
用mutating关键字可以使函数可以改变自己/自己的变量。在extension和struct里面都需要用这个关键字。
在Objective-C中,在头文件里面是这么写的, 然后在.m里面实现:
@interface NSString (ReverseStringExtension)
- (NSString *)reverseString; // implementent in .m file
@end
@implementation NSString (ReverseStringExtension)
- (