这里列出Objective-c中独有数据类型:

一、字符串

在Objective-c中,字符串常量是由@和一对从引号括起的字符串序列。比如:@"China"、@"objective-c"等都是合法的字符串常量。

二、id类型
    id类型是Objective-c中一个比较独特类型。
    在概念上、类似Java中的Object类,可以转换为任何数据类型。
    换句话说,id类型的变量可以存放任何数据类型的对象。
    在内部处理上,这种类型被定义为指向对象的指针,实际上是一个指向这种对象的实例变量的指针。

我们可以理解为id类型就是void*类型。但是它们两个并非完全一样。下面是id在objc.h中的定义:

  1. typedef struct objc_object {
  2. Class isa;
  3. }*id;

从上面看出,id是指向struct objc_object的一个指针。也就是说,id是一个指向任何一个继承了Ojbect(或者NSObject)类的对象。需要注意的是id是一个指针,所以在使用id的时候不需要加星号,比如:

id n=nil;

例如:

  1. id data;
  2. data = person;
  3. [data print];
  4. data = person1;
  5. [data put];

三、BOOL

在objc.h中,BOOL定义为:

  1. typedef signed char BOOL;
  2. #define YES   (BOOL)1
  3. #define NO    (BOOL)0

从上面的定义,我们可以发现布尔变量的值是YES和NO,或0和1.

如:

  1. BOOL enable=NO;
  2. enable=0;
  3. if(enable == YES) …
  4. if(enable) …
  5. if(!enable) …

它类似于C语言中的TRUE和FALSH.

四、SEL
    在Objective-c中,SEL是选择器(selector)的一个类型。
    选择器就是指向方法的一个指针。我们可以理解为程序运行到这里时就会执行指定的方法。

例如:

  1. SEL sel=@selector (print);
  2. ClassA *classA = [[ClassA alloc]init];
  3. ClassB *classB = [[ClassB alloc]init];
  4. [classA performSelector:sel withObject:nil];
  5. [classB performSelector:sel withObject:nil];
  6. SEL selA=@selector (print:);
  7. SEL selB=@selector (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 */

如:

  1. ClassA *classA = [[ClassA alloc]init];
  2. classA = nil
  3. id data;
  4. data=nil;

版权声明:本文为博主原创文章,未经博主允许不得转载。

Objective-c 数据类型的更多相关文章

  1. Automake

    Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...

  2. [转] 从 C 到 Objective C 入门1

    转自: http://blog.liuhongwei.cn/iphone/objective-c/ 进军iPhone开发,最大的难点之一就是怪异的Objective C语法了.不过,了解之后才发现,原 ...

  3. Objective C笔记(第一天)

    • OC语言概述 1.早在20世纪80年代早期,Bard Cox发明了Objective C, 是扩充的C,面向对象的编程语言. 2.NEXTSTEP简称NS a.1985年,Steve Jobs成⽴ ...

  4. iOS开发核心语言Objective C —— 全部知识点总结

    本分享是面向有意向从事iOS开发的伙伴及苹果产品的发烧友,亦或是已经从事了iOS的开发人员,想进一步提升者.假设您对iOS开发有极高的兴趣,能够与我一起探讨iOS开发.一起学习,共同进步.假设您是零基 ...

  5. Objective-C面向对象-对象和类

    文章都是先由本人个人博客:孙占兴:www.teilim.com,先更新,随后CSDN博客才会更新,掌握第一动态请关注本人主站. 原文链接:http://www.teilim.com/objective ...

  6. Objective - c Foundation 框架详解2

    Objective - c  Foundation 框架详解2 Collection Agency Cocoa provides a number of collection classes such ...

  7. OC基础--数据类型与表达式

    前言 做iOS开发有3年了,从当初的小白到现在,断断续续看过很多资料,之前也写过一些博文来记录,但是感觉知识点都比较凌乱.所以最近准备抽时间把iOS开发的相关知识进行一个梳理,主要分为OC基础.UI控 ...

  8. JavaScript 中的数据类型

    Javascript中的数据类型有以下几种情况: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Function,Date,Ar ...

  9. JS 判断数据类型的三种方法

    说到数据类型,我们先理一下JavaScript中常见的几种数据类型: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Functi ...

  10. Python高手之路【二】python基本数据类型

    一:数字 int int(整型): 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位系统上,整数的位数为64位,取值 ...

随机推荐

  1. C学习之指针强化

    char *p = (char *)malloc(100); malloc是用于分配内存的函数,它的参数为int型,表示分配多少个字节长度,其返回类型为void*,在这里用char*就是强制转化,指定 ...

  2. 利用 onload 事件监控跨站资源

    用过 CSP 的都很郁闷,上报的只有违规的站点名,却没有具体路径.这是缺陷,还是特意的设计? 显然,CSP 是为安全定制的,里面的规范自然要严格制定,否则就会带来新的安全问题.如果支持详细路径的上报, ...

  3. Delphi2010的RTTI增强

    Delphi编译的文件体积增大了很多.很大一部分原因是因为Delphi2010默认提供了全信息的RTTI. 每一个数据类型都有全部运行时信息.例如可以在运行时获得结构体的成员以及成员类型等. 这个功能 ...

  4. php 接口示例

    php 接口示例: public function dev(){ $m=new Model('machine_info'); $ip=$_GET['ip']; echo $ip; //$arr=$m- ...

  5. C++读写文件流的相关介绍

    掌握文本文件读写的方法了解二进制文件的读写方法 C++文件流:fstream // 文件流ifstream  // 输入文件流ofstream  // 输出文件流 //创建一个文本文件并写入信息//同 ...

  6. Codeforces 701C They Are Everywhere(Two pointers+STL)

    [题目链接] http://codeforces.com/problemset/problem/701/C [题目大意] 给出 一个字符串,里面包含一定种类的字符,求出一个最短的子串,使得其包含该字符 ...

  7. kbengine FAQ(3)

    官方FAQ 下面是我遇到的一些问题: 1.服务端   "strtof" 未定义的标示符 对于我这个c++入门级都不算的新手,这个错误很挠头,这个错误是由于vc++版本问题,新版的语 ...

  8. oracle decode函数用法

    DECODE函数是ORACLE PL/SQL是功能强大的函数之中的一个,眼下还仅仅有ORACLE公司的SQL提供了此函数,其它数据库厂商的SQL实现还没有此功能.DECODE有什么用途 呢? 先构造一 ...

  9. 通达OA 小飞鱼开发培训第四讲 工作流介绍(图文)

    本次课程主要解说了OA工作流相关内容,有些涉及到工作流的程序开发假设对工作流不熟悉也是有非常大难度,因此在这里进行了内容补充.   1.工作流介绍

  10. c语言中-----分配内存函数

    原型: void * realloc(void *p, size_t  size); realloc 可以对给定的指针所指的空间进行扩大 或者 缩小, 原有内存的数据保持不变.当然,对于缩小,则缩小部 ...