Objct-C与Swift的区别

NSString:copy
Block:strong

NSObject

1. 变量/常量
//swift
var i: Int = 0
let c: Int = 0
//oc/c/c++
int i = 0;
const int c = 0;//constant
2. 函数
fun add(a: Int, b: Int) -> Int{
    return a + b
}

class A {
    //必须通过对象调用: 成员方法
    fun add(a: Int, b: Int) -> Int {
        return a + b
    }

    //必须通过类名调用: 类方法
    static add(a: Int, b: Int) -> Int {
        return a + b
    }
}
//c/c++
int add(int a, int b){
    return a + b
}
//oc 
//类外: 完全等同c/c++
int add(int a, int b){
    return a + b
}

//类内
@interface A: NSObject

    //函数头部(函数声明)
    //-: 成员方法
    //+: 类方法
    //函数头部的所有类型,必须放圆括号内
    //每个冒号对应一个参数
    - (int)add: (int)a and: (int)b;
    + (int)add: (int)a and: (int)b;
@end

@implementation A
    - (int)add: (int)a and: (int)b {
        return a + b;
    }
    + (int)add: (int)a and: (int)b {
        return a + b;
    }
@end
3. 类型别名
//swift
typealias MyInt = Int
//oc/c/c++
typedef int MyInt;
4. 闭包
//swift
typealias AddClosure = (Int, Int) -> Int
//oc
//Block: c语言级别
int (^add)(int, int);
5. 扩展
//swift
extension NSObject {

}
//给协议添加默认方法实现
extension UITableViewDelegate {

}
//oc
//Category
@interface NSObject (xxxx)

@end
@implementation NSObject (xxxx)

@end

//Extension
//只能添加变量,并且这些变量只能在原始类中使用
//没有实现
@interface NSObject ()

@end
6. 协议
//swift
protocol Protocol {

}
@protocol Protocol
    //@required
    - (void)add;
    @opional
    - (void)sub;
@end
7. 编译预处理
//swift
#if true
#endif
//oc/c/c++
#if 1
#endif
8. 第三方框架

swift里面用SnapKit;OC里面用Masonry。
swift里面:Alamofire,OC里面:AENetworking

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容