`

Objective-C 中的特殊数据类型

阅读更多

我们在这里解释一下它们的细节:

 

id

 

id和void *并非完全一样。在上面的代码中,id是指向struct objc_object的一个指针,这个意思基本上是说,id是一个指向任何一个继承了Object(或者NSObject)类的对象。需要注意的是id 是一个指针,所以你在使用id的时候不需要加星号。比如id foo=nil定义了一个nil指针,这个指针指向NSObject的一个任意子类。而id *foo=nil则定义了一个指针,这个指针指向另一个指针,被指向的这个指针指向NSObject的一个子类。

 

nil

 

nil和C语言的NULL相同,在objc/objc.h中定义。nil表示一个 Objctive-C对象,这个对象的指针指向空(没有东西就是空)。

 

Nil

 

首字母大写的Nil和nil有一点不一样,Nil定义一个指向空的类(是Class,而不是 对象)。

 

SEL

 

这个很有趣。SEL 是“selector ”的一个类型,表示一个方法的名字。比如以下方法:

 

-[Foo count ] 和 -[Bar count ] 使用同一个selector ,它们的selector 叫做count

 

在上面的头文件里我们看到,SEL 是指向 struct objc_selector的指针,但是objc_selector是什么呢?那么实际上,你使用GNU Objective-C的运行时间库和NeXT Objective-C的运行运行时间库(Mac OS X使用NeXT的运行时间库)时,它们的定义是不一样的。实际上Mac OSX仅仅将SEL映射为C字符串。比如,我们定义一个Foo的类,这个类带有一个- (int ) blah方法,那么以下代码:

 

  1. NSLog ( @"SEL=%s" , @selector ( blah) ) ;

 

 

会输出为 SEL=blah。

 

说白了SEL就是返回方法名。

分享到:
评论

相关推荐

    Objective-C基本数据类型范例

    在这个"Objective-C基本数据类型范例"中,我们重点探讨了四种主要的数据类型:int、float、double和char,它们是构建任何程序的基础。让我们深入理解这些基本数据类型以及它们在Objective-C中的应用。 1. **int**:...

    Objective-C培训教程

    在第二章数据类型中,Objective-C提供了标准C语言的数据类型外,还引入了对象类型的引用。在Objective-C中,所有的对象变量都是指针类型,使用*符号来表示。id类型是Objective-C中一种特殊的数据类型,可以指向任何...

    objective-c编程 第2版=objective-c program 2nd edition_13889311

    1. **基础语法**:学习Objective-C首先需要了解它的基本语法,包括变量定义、数据类型、运算符、流程控制语句等。此外,还会涉及Objective-C中的特殊语法,如nil和NULL的区别、实例变量和属性的使用。 2. **类与...

    objective-c语言教程

    - **支持的类型**:列出了Objective-C中支持作为属性值的数据类型。 - **属性重声明**:解释了如何在一个子类中重新声明父类中的属性。 - **与Core Foundation结合使用**:介绍了如何在Objective-C中与Core ...

    Objective-C语言教程与案例.zip

    3. **Foundation框架**:Objective-C的基础库,提供了许多基本的数据类型和常用功能。例如,NSArray、NSDictionary、NSString等重要类的使用可能会被深入讨论。 4. **内存管理**:Objective-C使用引用计数...

    0基础iOS开发学习计划Objective-c语言内容概述.doc

    Objective-C的数据类型大部分沿用了C语言中的数据类型,如整型(`int`, `long`, `short`)、浮点型(`float`, `double`)等。此外,还有一些特殊的类型,如`NSString`、`NSArray`等用于处理字符串和数组等对象。 - ...

    Objective-C Succinctly.pdf

    - **特殊数据类型**: - **id**:用于表示任何Objective-C对象。 - **Class**:用于表示类本身。 #### 七、属性 - **声明属性**:使用`@property`声明属性,可以指定读写权限。 - **实现属性**:在类实现部分使用...

    Objective-C 入门指南 中文

    - **Foundation 框架**:提供了基础的数据类型和集合类。 - `NSArray`:固定长度数组。 - `NSDictionary`:键值对集合。 #### 七、优缺点分析 - **优点**: - 面向对象的特性。 - 动态运行时特性。 - 强大的...

    Objective-C资料整理

    此外,Objective-C还引入了一些特定于面向对象的数据类型,比如`BOOL`、`id`、`Class`、`SEL`等。 ##### BOOL类型 在Objective-C中,`BOOL`类型与C语言中的布尔类型有所不同。在Objective-C中,`1`代表`YES`(真)...

    Objective-C培训资料

    1. 程序结构和基本语法:包括Objective-C程序的组成、数据类型、变量、常量、运算符、控制流程语句(如if语句、for循环、while循环等)、函数的定义和使用等基础知识点。 2. 类和对象:介绍了类的定义、对象的创建...

    Objective-C 6th Edition

    它包括了Objective-C语言的基础知识,例如变量、数据类型、运算符、控制流语句、函数和指针等。书中还深入探讨了面向对象编程的重要概念,例如类、对象、继承、多态和封装。此外,它还会讲解如何使用Cocoa和Cocoa ...

    Pro Objective-C

    附录部分提供了Objective-C语言元素的详细介绍,包括关键字、运算符、数据类型等基础概念。 ### Appendix B: Xcode Xposed! 本书还包括了一个关于Xcode的特别章节,旨在帮助读者更好地了解和利用Xcode集成开发环境...

    Objective-C程序设计 第6版

    3. **数据类型**:Objective-C支持多种数据类型,包括基本类型(如int、float等)和复杂类型(如数组、字典等)。 4. **内存管理**:深入理解手动内存管理和ARC(自动引用计数)机制,了解如何正确地使用它们来避免...

    Objective-C Cheatsheet

    - Objective-C支持多种基本数据类型,如int, float, double, BOOL。 - 还包括特殊的对象类型,如NSString, NSArray等。 - id类型可以引用任何类型的对象。 5. 属性的定义: - @property关键字用于定义类的属性...

    Programming in objective - C.pdf

    1. **面向对象**:Objective-C支持类和对象的概念,允许开发者创建自定义的数据类型。 2. **动态性**:Objective-C具有高度的动态性,可以在运行时添加方法或改变对象的行为。 3. **C兼容性**:Objective-C保留了...

Global site tag (gtag.js) - Google Analytics