做网站专业,乐陵seo网站优化,网站空间换了 使用原有域名,省内新闻最新消息这里列出Objective-c中独有数据类型#xff1a; 一、字符串 在Objective-c中#xff0c;字符串常量是由和一对从引号括起的字符串序列。比如#xff1a;China、objective-c等都是合法的字符串常量。 二、id类型 id类型是Objective-c中一个比较独… 这里列出Objective-c中独有数据类型 一、字符串 在Objective-c中字符串常量是由和一对从引号括起的字符串序列。比如China、objective-c等都是合法的字符串常量。 二、id类型 id类型是Objective-c中一个比较独特类型。 在概念上、类似Java中的Object类可以转换为任何数据类型。 换句话说id类型的变量可以存放任何数据类型的对象。 在内部处理上这种类型被定义为指向对象的指针实际上是一个指向这种对象的实例变量的指针。 我们可以理解为id类型就是void*类型。但是它们两个并非完全一样。下面是id在objc.h中的定义 [cpp] view plaincopy typedef struct objc_object { Class isa; }*id; 从上面看出id是指向struct objc_object的一个指针。也就是说id是一个指向任何一个继承了Ojbect或者NSObject)类的对象。需要注意的是id是一个指针所以在使用id的时候不需要加星号比如 id nnil 例如 [cpp] view plaincopy id data data person [data print]; … data person1; [data put]; … 三、BOOL 在objc.h中BOOL定义为 [cpp] view plaincopy typedef signed char BOOL; #define YES (BOOL)1 #define NO (BOOL)0 从上面的定义我们可以发现布尔变量的值是YES和NO或0和1. 如 [cpp] view plaincopy BOOL enableNO enable0 if(enable YES) … if(enable) … if(!enable) … 它类似于C语言中的TRUE和FALSH. 四、SEL 在Objective-c中SEL是选择器(selector)的一个类型。 选择器就是指向方法的一个指针。我们可以理解为程序运行到这里时就会执行指定的方法。 例如 [cpp] view plaincopy SEL selselector (print); ClassA *classA [[ClassA alloc]init]; ClassB *classB [[ClassB alloc]init]; [classA performSelector:sel withObject:nil]; [classB performSelector:sel withObject:nil]; SEL selAselector (print:); SEL selBselector (print:age:); 在上例中sel是指向print方法的指针没有指定它是属于哪个类。因此不同的类中都有print方法时可以调用上面的形式进行调用。 我们可以将SEL理解为函数指针但它们之间并非完全一样。 五、Class 与Java类似你可以使用Class类来获得一个对象所属的类。如 Class theClass [theObject class]; //获得theObject对象的class信息 NSLog(类名是%s,[theClass className]); //theObject对象的类名 Class类有几个常用的方法如判断某个对象是否为某个类(包含子类)的对象 if( [theObject isKindOfClass:[Member class]]) {…} 如果不想包含子类就可以使用 nil与C语言的NULL相同。在objc/objc.h中定义如下 define nil 0 /* id of Nil instance */ Nil与nil有点不一样Nil定义一个指向空的类是Class而不是对象。具体定义如下 define Nil 0 /* id of Nil class */ 如 [cpp] view plaincopy ClassA *classA [[ClassA alloc]init]; classA nil id data; datanil; 版权声明本文为博主原创文章未经博主允许不得转载。 转载于:https://www.cnblogs.com/Free-Thinker/p/4962958.html