当前位置:主页 > 开发频道 > 新手教学 > 基础知识 >

Objective-C中的一些特殊的数据类型

时间: 2009-06-11 19:34 点击:

在Objective-C中,有一些我们之前并不熟悉但是经常见到的数据类型,比如id、nil、Nil、SEL等等。在很多文章里,我们都见过这些数据类型的介绍,但是都没有说的太清楚。 这篇文章从最

IMP

 

从上面的头文件中我们可以看到,IMP定义为 id (*IMP) (id, SEL, …)。这样说来, IMP是一个指向函数的指针,这个被指向的函数包括id(“self”指针),调用的SEL(方法名),再加上一些其他参数。

 

说白了IMP就是实现方法。

 

Method

 

在objc/objc-class.h中定义了叫做Method的类型,是这样定义的:

 

  1. typedef struct objc_method *Method;
  2. struct objc_method {
  3.   SEL method_name;
  4.   char *method_types;
  5.   IMP method_imp;
  6. };

 

 

 

这个定义看上去包括了我们上面说过的其他类型。也就是说,Method(我们常说的方法)表示一种类型,这种类型与selector和实现(implementation)相关。

 

Class

 

从上文的定义看,Class(类)被定义为一个指向struct objc_class的指针,在objc/objc-class.h中它是这么定义的:

 

  1. struct objc_class {
  2.   struct objc_class *isa;
  3.   struct objc_class *super_class;
  4.   const char *name;
  5.   long version;
  6.   long info;
  7.   long instance_size;
  8.   struct objc_ivar_list *ivars;
  9.   struct objc_method_list **methodLists;
  10.   struct objc_cache *cache;
  11.   struct objc_protocol_list *protocols;
  12. };

 

这里除了介绍一下定义之外就不打算说的太详细了,今后我们会详细介绍一下。

顶一下(4)

66.7%

踩一下(2)

33.3%

发表评论

评价: 中立 好评 差评 请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

表情:

论坛新帖 进入论坛...