美文网首页
9.14 Objective-C

9.14 Objective-C

作者: jayck | 来源:发表于2016-09-14 11:03 被阅读22次

    .h: (header)头文件

    .m: (implementation) 实现文件

    .mm: 入伙混合了C++代码

    同一个项目中可以同时使用OC/C/C++/Swift,都是强类型语言

    但是Swift不能写在.m文件中,其他三个语言可以。

    入口函数:有且只有一个!


    标准写法

    Swift把类型写在变量后面,OC把类型写在变量前面

    int main(int argc, const char * argv[]) {
        return 0;
    }
    
                                        简单数据类型
    
        Swift                                Objective-C/C/C++
        Int                                    int
        Double                                 double
        Float                                  float
    

    Swift 首字母大写,OC/C/C++首字母小写

    对象类型必须加 * 号
    创建对象和初始化对象是分开的

    //两段式创建方法

    NSObject *obj = [NSObject alloc];
    obj  = [obj init];
    

    //简写形式

    NSObject *obj1 = [[NSObject alloc]init];
    

    OC的类

    有@

    OC的类必须有父类

    1.声明部分 .h或.m都可以

    @interface A: NSObject
    
    {
    
    //定义变量
    
    }
    
    //定义方法
    
    @end
    
    2.实现部分
    
    @interface A
    
    @end
    

    OC里面NSObject要非常熟悉,所有的类最终都会找到NSObject 父类


    1. OC 变量 / 常量

    int i = 0;                //变量
    
    const int c = 0;     //constant(不可变)     常量
    

    2. 函数

    //Swift
    
    func 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
    
        //函数头部(函数声明)               PS:不能写实现
    
        // -: 成员方法               Swift里的static
    
        //+: 类方法                   Swift里的func 
    
        //函数头部的所有类型,必须放( )内
    
        //每个冒号对应一个参数
    
        - (int)add:a and:(int)b;        //add:and     类名
    
        +(int)add:a and:(int)b;
    
    @end
    
    @implementation A
    
        - (int)add:(int)a and:(b) {
    
        return a + b
    
    }
    
    + (int)add:(int)a and:(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 UITabViewDelaegate {
    
    }
    
    //OC
    //Category: 类别
    
    @interface NSObject (xxx)
    
    @end
    
    @implementation NSObject (xxx)
    
    @end
    
    //Extension
    
    //只能添加变量, 并且这些变量只能在原始类中使用,没有源码基本没什么用。但是越狱的人有用
    
    @interface NSObject ()
    
    @end
    

    6.协议

    //Swift
    
    Protocol AProtocol {
    
    }
    
    //OC
    
    @protocol AProtocol
    
        @required                    //必须实现
    
        - (void)add;
    
        @opional                      //可以不实现
    
        - (void)sub;
    
    @end
    

    7.编译预处理指令

    //Swift
    #if true
    #endif
    
    //OC/C/C++
    #if1
    
    #endif
    

    相关文章

      网友评论

          本文标题:9.14 Objective-C

          本文链接:https://www.haomeiwen.com/subject/qwjvettx.html