我们在这里解释一下它们的细节:
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方法,那么以下代码:
-
NSLog
(
@"SEL=%s"
, @selector
(
blah)
)
;
会输出为 SEL=blah。
说白了SEL就是返回方法名。
分享到:
相关推荐
在这个"Objective-C基本数据类型范例"中,我们重点探讨了四种主要的数据类型:int、float、double和char,它们是构建任何程序的基础。让我们深入理解这些基本数据类型以及它们在Objective-C中的应用。 1. **int**:...
在第二章数据类型中,Objective-C提供了标准C语言的数据类型外,还引入了对象类型的引用。在Objective-C中,所有的对象变量都是指针类型,使用*符号来表示。id类型是Objective-C中一种特殊的数据类型,可以指向任何...
1. **基础语法**:学习Objective-C首先需要了解它的基本语法,包括变量定义、数据类型、运算符、流程控制语句等。此外,还会涉及Objective-C中的特殊语法,如nil和NULL的区别、实例变量和属性的使用。 2. **类与...
- **动态识别(Dynamic types)**:Objective-C的动态类型系统允许在运行时确定对象的类型。 - **Categories**:扩展已有类的功能,不需创建子类。 - **Posing**:对象伪装,让一个对象表现得像另一个对象。 - *...
- **支持的类型**:列出了Objective-C中支持作为属性值的数据类型。 - **属性重声明**:解释了如何在一个子类中重新声明父类中的属性。 - **与Core Foundation结合使用**:介绍了如何在Objective-C中与Core ...
3. **Foundation框架**:Objective-C的基础库,提供了许多基本的数据类型和常用功能。例如,NSArray、NSDictionary、NSString等重要类的使用可能会被深入讨论。 4. **内存管理**:Objective-C使用引用计数...
Objective-C的数据类型大部分沿用了C语言中的数据类型,如整型(`int`, `long`, `short`)、浮点型(`float`, `double`)等。此外,还有一些特殊的类型,如`NSString`、`NSArray`等用于处理字符串和数组等对象。 - ...
- **特殊数据类型**: - **id**:用于表示任何Objective-C对象。 - **Class**:用于表示类本身。 #### 七、属性 - **声明属性**:使用`@property`声明属性,可以指定读写权限。 - **实现属性**:在类实现部分使用...
- **Foundation 框架**:提供了基础的数据类型和集合类。 - `NSArray`:固定长度数组。 - `NSDictionary`:键值对集合。 #### 七、优缺点分析 - **优点**: - 面向对象的特性。 - 动态运行时特性。 - 强大的...
此外,Objective-C还引入了一些特定于面向对象的数据类型,比如`BOOL`、`id`、`Class`、`SEL`等。 ##### BOOL类型 在Objective-C中,`BOOL`类型与C语言中的布尔类型有所不同。在Objective-C中,`1`代表`YES`(真)...
1. 程序结构和基本语法:包括Objective-C程序的组成、数据类型、变量、常量、运算符、控制流程语句(如if语句、for循环、while循环等)、函数的定义和使用等基础知识点。 2. 类和对象:介绍了类的定义、对象的创建...
它包括了Objective-C语言的基础知识,例如变量、数据类型、运算符、控制流语句、函数和指针等。书中还深入探讨了面向对象编程的重要概念,例如类、对象、继承、多态和封装。此外,它还会讲解如何使用Cocoa和Cocoa ...
附录部分提供了Objective-C语言元素的详细介绍,包括关键字、运算符、数据类型等基础概念。 ### Appendix B: Xcode Xposed! 本书还包括了一个关于Xcode的特别章节,旨在帮助读者更好地了解和利用Xcode集成开发环境...
3. **数据类型**:Objective-C支持多种数据类型,包括基本类型(如int、float等)和复杂类型(如数组、字典等)。 4. **内存管理**:深入理解手动内存管理和ARC(自动引用计数)机制,了解如何正确地使用它们来避免...
- Objective-C支持多种基本数据类型,如int, float, double, BOOL。 - 还包括特殊的对象类型,如NSString, NSArray等。 - id类型可以引用任何类型的对象。 5. 属性的定义: - @property关键字用于定义类的属性...
1. **面向对象**:Objective-C支持类和对象的概念,允许开发者创建自定义的数据类型。 2. **动态性**:Objective-C具有高度的动态性,可以在运行时添加方法或改变对象的行为。 3. **C兼容性**:Objective-C保留了...