iOS开发中部分关键字

作者: RainyHand | 来源:发表于2017-06-14 14:57 被阅读59次

    一.static关键字
    (1).在局部变量中使用。在编译期就会开辟内存空间,只会初始化一次,放在静态变量区。不会改变作用域,但是会延长生命周期,在程序结束后才会被释放。
    (2).在全局变量中使用,就会改变作用域,仅限于当前类起作用。(注:可以通过调用函数等方式间接修改)
    举例:如果不加static,在别的类中可以使用extern关键字进行引用以及修改。


    1.png ![屏幕快照 2017-06-14 下午2.45.15.png](https://img.haomeiwen.com/i1672724/e8dd30e7a0e385e1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    二.const关键字
    (1).被const修饰的标记为只读变量
    修饰的是右边的变量,static int a,修饰常量a为只读, static int *a修饰指针 *a为只读。
    (2).其他使用及注意
    const与宏的区别

    • 编译时刻:宏是预编译(编译之前处理),const是编译阶段。
    • 编译检查:宏不做检查,不会报编译错误,只是替换,const会编译检查,会报编译错误。
    • 宏的好处:宏能定义一些函数,方法。 const不能。
    • 宏的坏处:使用大量宏,容易造成编译时间久,每次都需要重新换。
    • 宏放在常量去,只会生成一份内存。
    • static与const作用:声明一个只读的静态变量
    • 经常使用的同一个字符串常量,可以使用extern与const组合
      三.
      (1).__bridge只做类型转换,但是不修改对象(内存)管理权;
      (2).__bridge_retained(也可以使用CFBridgingRetain)将Objective-C的对象转换为Core Foundation的对象,同时将对象(内存)的管理权交给我们,后续需要使用CFRelease或者相关方法来释放对象;
      (3).__bridge_transfer(也可以使用CFBridgingRelease)将Core Foundation的对象转换为Objective-C的对象,同时将对象(内存)的管理权交给ARC。
      四.typedef
      typedef仅仅是类型定义,和#define差不多,但是区别是,typedef仅仅对于类型,不针对值。
      例:
      typedef char * PChar;
      PChar a, b; //相当于char *a; char *b;
      注:在swift中换成typealias Location = CGPoint 。(关键字typealias)

    相关文章

      网友评论

        本文标题:iOS开发中部分关键字

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