iOS开发中部分关键字

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


iOS开发中部分关键字_第1张图片
1.png
iOS开发中部分关键字_第2张图片
![屏幕快照 2017-06-14 下午2.45.15.png](http://upload-images.jianshu.io/upload_images/1672724-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开发中部分关键字)