zoukankan      html  css  js  c++  java
  • OC特有语法


    1. MacOS快捷键

       command + c 复制

       command + v 粘贴

       command + w 关闭当前窗口

       command + q 关闭所有窗口


       Xcod快捷键

       command + r 运行

       command + b 编译

       #pragma mark - target 代码中做标记

    2. 编译器特性:

         1) OC点语法,实质是转换为对象的set/get方法。

         2) @property int age;可以自动生成某个成员变量的setter和getter声明。

         3) @synthesize age = _age;自动生成成员变量的setter和getter实现,并且会访问_age(如果不存在,就会自动生成@private类型的_age变量)

         最新Xcode中@property就可以实现上述两个功能。默认情况下setter和getter方法实现中会去访问下划线 _开头的成员变量。

    3. id数据类型,(万能指针,能指向/操作任何OC对象)

    4. new方法完整的创建一个对象,包括以下两个方法。

        1) 分配存储空间  +alloc

        2) 初始化  -init

        Person *p = [Personnew];相当于 Person *p = [[Person alloc] init];

    5. 构造方法:用来初始化对象,是个对象方法。init方法为构造方法。

         重写构造方法:

       

    -(id) init
    {
    if ( self = [super init])
    {
        _age = 10;
    }
    return self;
    }

    6. 分类(Category)在不改变原来类模型的前提下,给类扩充一些方法。

        使用注意:

        1) Category可以访问原始类的实例变量,但不能添加变量,只能添加方法。如果想添加变量,可以考虑通过继承创建子类

        2) Category可以实现原始类的方法,但不推荐这么做,因为它是直接替换掉原来的方法,这么做的后果是再也不能访问原来的方法

        3) 多个Category中如果实现了相同的方法,只有最后一个参与编译的才会有效。

    7. 类的本质

        其实类也是一个对象,是Class类型的对象,简称“类对象”

        Class类型的定义

        typedef structobjc_class *Class;

        类名就代表着类对象,每个类只有一个类对象

    8. 获取类对象的2种方式

        Class c = [Personclass];//类方法

        或者

        Person *p = [Personnew];

        Class c2 = [p class]; // 对象方法

    9. +load和+initialize

        1) +load

             在程序启动的时候会加载所有的类和分类,并调用所有类和分类的+load方法

             先加载父类,再加载子类;也就是先调用父类的+load,再调用子类的+load

             先加载元原始类,再加载分类

             不管程序运行过程有没有用到这个类,都会调用+load加载

        2) +initialize

             在第一次使用某个类时(比如创建对象等),就会调用一次+initialize方法

             一个类只会调用一次+initialize方法,先调用父类的,再调用子类的

    10. description方法

          1) -description方法(决定了实例对象的输出结果)

               使用NSLog和%@输出某个对象时,会调用对象的-description方法,并拿到返回值进行输出。

                默认情况下结果是:<类名:内存地址>

          2) + description方法(决定了类对象的输出结果)

    11. NSLog输出增强

           __FILE__ :源代码文件名

           __LINE__ :NSLog代码在第几行

           _cmd :代表着当前方法的SEL (不能直接输出)

           NSString *str = NSStringFromSelector(_cmd);  //将当前方法的SEL转换成字符串类型

    12. SEL其实是对方法的一种封装,将方法包装成一个SEL类型的数据,去找对应的方法地址。其实消息就是SEL。

          1) SEL类型的定义

               typedef structobjc_selector     *SEL;

          2) SEL对象的创建:

               SEL s = @selector(test);

               SEL s2 =NSSelectorFromString(@"test");

          3) SEL对象的其他用法:

               NSString*str = NSStringFromSelector(@selector(test));

               // 调用对象p的test方法

               Person *p = [Person new];

               [p performSelector:@selector(test)];
  • 相关阅读:
    HLG 1522 子序列的和【队列的应用】
    POJ 3273 Monthly Expense【二分】
    HDU 4004 The Frog's Games 【二分】
    POJ 2001 Shortest Prefixes【第一棵字典树】
    POJ 2823 Sliding Window【单调对列经典题目】
    HDU 1969 Pie 【二分】
    POJ 3125 Printer Queue【暴力模拟】
    POJ 3250 Bad Hair Day【单调栈】
    字典树【模板】
    验证码 Code
  • 原文地址:https://www.cnblogs.com/coderkl/p/4320322.html
Copyright © 2011-2022 走看看