iOS你可能不知道的生僻知识---[_cmd、@]

******_cmd

Objective-C的编译器在编译后会在每个方法中加两个隐藏的参数:
***一个是_cmd,当前方法的一个SEL指针。_cmd在Objective-C的方法中表示当前方法的selector,正如同self表示当前方法调用的对象实例。
***另一个就是用的比较多的self,指向当前对象的一个指针。

******@

OC中的@字符用的频率非常的高,其主要作用是为了区别于其他语言的关键字和语法

oc语言中基本上所有的关键字前面都加上了@,是为了和C语言的关键字区分开来,如@interface,@implementation,@public等,也有一些不以@开头,如id等。

下面我们来研究一下其应用

1.声明类,协议,延展,权限,属性等

[html] view plain copy
  1. @interface声明类  
  2. @protocol声明协议  
  3. @requied声明变量的访问权限  
  4. ...  

2.数组字典等OC专用类型

[html] view plain copy
  1. @"OC字符串"                对应的类型是NSString  
  2. @1 //OC的数字的对象形式     对应的类型是NSNumber  
  3. @(1)同上  
  4. @[@1,@2,obj] //OC的数组  
  5. @{@"key":value}//OC的字典  

3.类型转换

OC的@可以把普通的数据类型转换为OC的对象类型

[html] view plain copy
  1. int a = 1;  
  2. char *s = "string";  
  3.  NSString *str = @(s);//把C语言的字符串转化为OC的字符串  
  4.  NSNumber *val = @1;//把整形转换为OC的对象类型  
  5.  NSNumber *val2 = @(1);  

4.注释的参数返回值说明

[html] view plain copy
  1. /**  
  2.  *  @param argc 参数1  
  3.  *  @param argv 参数2  
  4.  *  @return 返回值是状态值  
  5.  */  

5.实现属性(已过时)

[html] view plain copy
  1. @synthesize property;  

6.线程同步

[html] view plain copy
  1. @synchronized(self)  
  2.   
  3.        self.doneCount++;  

更多OC文章:http://blog.csdn.net/yangbingbinga/article/category/2437601

 

posted @ 2018-01-18 10:30  yuhui.Mr  阅读(183)  评论(0)    收藏  举报