`
ocen713
  • 浏览: 36788 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Objective-C Class类型

阅读更多
5.6,Class类型

  到目前为止,我们已经知道了对应于方法的SEL数据类型,和SEL同样在Objective-C里面我们不仅仅可以使用对应于方法的SEL,对于类在Objective-C也为我们准备了类似的机制,Class类型。当一个类被正确的编译过后,在这个编译成功的类里面,存在一个变量用于保存这个类的信息。我们可以通过一个普通的字符串取得 这个Class,也可以通过我们生成的对象取得这个Class。Class被成功取得之后,我们可以把这个Class当作一个已经定义好的类来使用它。这样的机制允许我们在程序执行的过程当中,可以Class来得到对象的类,也可以在程序执行的阶段动态的生成一个在编译阶段无法确定的一个对象。

  因为Class里面保存了一个类的所有信息,当然,我们也可以取得一个类的超类。关于Class类型,具体的使用格式如下:

1     Class 变量名 = [类或者对象 class];
2     Class 变量名 = [类或者对象 superclass];
3     Class 变量名 = NSClassFromString(方法名字的字符串);
4     NSString *变量名 = NSStringFromClass(Class参数);

  第一行代码,是通过向一个类或者对象发送class消息来获得这个类或者对象的Class变量。

  第二行代码,是通过向一个类或者对象发送superclass消息来获得这个类或者对象的超类的Class变量。

  第三行代码,是通过调用NSClassFromString函数,并且把一个字符串作为参数来取得Class变量。这个在我们使用配置文件决定执行的时候的类的时候,NSClassFromString给我们带来了极大的方便。

  第四行代码,是NSClassFromString的反向函数NSStringFromClass,通过一个Class类型作为变量取得一个类的名字。

当我们在程序里面通过使用上面的第一,二或者第三行代码成功的取得一个Class类型的变量,比如说我们把这个变量名字命名为myClass,那么我们在以后的代码种可以把myClass当作一个我们已经定义好的类来使用,当然我们可以把这个变量作为参数传递到其他的方法当中让其他的方法动态的生成我们需要的对象。
分享到:
评论
1 楼 vieri122 2011-04-02  
网上搜过来的,不错,很简洁明了。谢了

相关推荐

    Objective-C基础教程(入门教程).pdf

    5. 类级别的访问控制(Classlevel access):Objective-C允许开发者定义类方法和实例方法,其中类方法只能通过类名直接调用,而实例方法则需要通过实例对象调用。 6. 异常处理(Exceptions):在Objective-C中,...

    Objective-C编程全解最新版.pdf.zip

    1. **Objective-C基础**:Objective-C是在C语言基础上扩展的,因此,理解C语言的基本语法是必要的。Objective-C添加了消息传递机制、类和协议等面向对象特性。 2. **消息传递**:Objective-C中的对象通过发送消息来...

    Objective-C与Objective-C++的混用代码示例

    Objective-C是基于C语言的,主要用于构建iOS和macOS应用程序,而Objective-C++则是Objective-C的一个扩展,它引入了C++的特性,使得开发者可以同时利用Objective-C的动态特性和C++的面向对象编程能力。 ### ...

    objective-c基础教程

    Objective-C继承了C语言的基础语法结构,并在此基础上增加了面向对象的特性,包括类(Class)、对象(Object)、消息传递(Message Passing)等概念。具体特点如下: 1. **动态性**: Objective-C是一种动态类型的语言,这...

    objective-c基础教程第2版.pdf

    Objective-C通过类(class)来实现这些概念,类可以定义数据类型和方法,从而创建对象。Objective-C中的继承允许一个类(子类)继承另一个类(父类)的属性和方法,而多态允许使用父类类型的指针来引用子类类型的...

    objective-c运行时编程指南

    - **类型编码**:Objective-C支持类型编码,这是一种用于表示Objective-C对象类型的格式化字符串。通过`@encode()`可以获取特定类型或对象类型的编码字符串,这对于需要在运行时确定对象类型的场景非常有用。 - **...

    这是一个基于Objective-C语言的基础案例集。旨在用于给初学者快速了解Objective-C语言的语法。.zip

    1. **类与对象**:Objective-C是基于Smalltalk的,它引入了类(Class)的概念,这是创建对象(Object)的蓝图。对象是数据和方法的封装,它们通过消息传递来相互交流。 2. **动态类型系统**:Objective-C采用动态...

    Objective-C - Learning Objective-C 2.0 Second Edition

    本书的第一章《C, the Foundation of Objective-C》从C语言的基本概念出发,介绍了变量、数据类型、运算符、表达式、控制结构等基础知识,为后续章节的学习打下坚实的基础。 #### 三、C变量详解 第二章《More ...

    Objective-C语言核心语法

    总的来说,Objective-C语言的核心语法包括类的定义和消息传递机制,内存管理和对象生命周期管理,以及类型系统特别是`id`、`Class`和`SEL`的使用。这些知识点对于从C++转战Objective-C的开发者来说至关重要,理解并...

    从 C++ 到 Objective-C 快速精通

    1. 类与对象:Objective-C的类基于C++的结构,但增加了元类(Meta-Class)的概念,支持运行时类型检查和动态对象创建。C++程序员需要理解Objective-C中的`@interface`、`@implementation`和`@end`关键字的用法,以及...

    《Objective-C2.0程序设计(原书第2版)》_中文完整版

    在这一部分中,还涉及了函数、数组、结构体和指针等C语言元素,因为Objective-C建立在C语言之上,所以对这些基础概念的掌握对于学习Objective-C至关重要。 第二部分关注于Foundation框架的详细阐述。Foundation框架...

    From C++ to Objective-C

    Objective-C将类的概念以不同的方式表达,例如使用struct而非class关键字,并且所有的Objective-C关键字都以@符号开头,如@interface、@implementation等。Objective-C 2.0引入了新的关键字,比如@property、@...

    objective-c 编程

    Objective-C是由C语言发展而来,融入了Smalltalk的面向对象特性,因此它结合了C的简洁性和面向对象的灵活性。 1. **面向对象编程基础**: Objective-C的核心是它的面向对象特性,包括类(Class)、对象(Object)...

    Objective-C Runtime Guide.pdf

    - 使用`objc_getClass`函数可以获取指定类的`Class`类型指针。 - `class_getName`函数用于获取类的名字。 - `class_getSuperclass`函数返回该类的父类。 - 通过`class_copyMethodList`和`class_...

    Learn Objective-C On The Mac(英文PDF+SourceCode)

    2. **基本语法**:讲解Objective-C的基础语法,如变量声明、常量定义、数据类型、流程控制(条件语句和循环)等。 3. **Objective-C的对象和类**:深入讨论面向对象编程的核心概念,如类的定义、实例化、继承、多态...

    Manning.Objective-C.Fundamentals.Sep.2011.rar

    - **变量与数据类型**:Objective-C支持C语言的基本数据类型,同时有特有的对象类型。 - **关键字与语句**:如`@interface`, `@implementation`, `@protocol`, `@class`, `@property`等。 - **方法定义**:...

    Objective-C编程(第四版)英文原版

    1. **面向对象编程基础**:Objective-C是C语言的超集,扩展了C语言以支持面向对象的特性,如类、对象、继承、封装和多态。了解这些基本概念是学习Objective-C的第一步。 2. **Objective-C语法**:Objective-C引入了...

Global site tag (gtag.js) - Google Analytics