Objct-CとSwiftの違い

1960 ワード

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