一. SEL 类型

    在上一篇介绍了几个方法,都只是介绍了其使用方式但是没有具体介绍参数:

- (id)performSelector:(SEL)aSelector;
- (id)performSelector:(SEL)aSelector withObject:(id)object;
- (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;
- (BOOL)respondsToSelector:(SEL)aSelector;

    其中有看到SEL类型。SEL相当于函数指针。下面介绍performSelector方法:

    [对象 performSelector:SEL变量 withObject:参数1 withObject:参数2]; 
在调用respondsToSelector:@selector(method)时,这个method只有在该方法存在参数时需要 ":",如果该方法不需要参数就不需要加这个冒号。否则,编译不会报错,只是执行返回的值不对。当然如果方法有多个参数,需要多个冒号,参数有名称的需要带上参数名称。

  二. @selector 

    @selector 其实就是选择器,使用@selector放回SELleixing,所以SEL和@selector一般都是同时使用的。

SEL sel=@selector(write:andAge:);

    @selector方法用法如上,但是这里要注意一下如果方法有输入参数则需要使用: ,如果没有参数则不要:

SEL sel1=@selector(eat);

    如果使用可以参考上一章所述内容。

  三. Class

    先看看Class类型的代码如下:

typedef struct objc_class *Class;
typedef struct objc_object {
Class isa;
} *id;

    从上面的代码可以看到Class 是结构类型,可以使用如下方式获取一个对象的Class

Class c=[Person class];

  四. @class

  由于头文件的相互包含及依赖关系,往往很小的改动就需要重新编译很多的文件。Object-C提供了一种方法可以减少由于依赖引起的重新编译:@class 来告诉编译器这是一个类,编译器只需要通过指针来引用它即可,并不需要知道关于这个类的更多信息。以此来减少编译工作。

#import <Foundation/Foundation.h>
@class Person;
@interface Student : NSObject{
Person *p;
}
@end

  通过以上代码可以看到,@class Person . 然后我们在Student 类中就可以直接引用Person这个类了。在以往的时候需要使用

  #import "Person.h" 才可以。 我们使用@class 替换之前的这种方式。

最新文章

  1. react+reflux入门教程
  2. 【Alpha版本】冲刺阶段——Day 10
  3. spring.net xml 命名空间
  4. Android多线程分析之四:MessageQueue的实现
  5. OpenGL图元的颜色属性
  6. Android 音乐播放器之--错误状态下调用导致的异常
  7. ServiceStack.Redis.RedisNativeClient的方法“get_Db”没有实现
  8. iOS相机操作笔记
  9. hdu 1757 A Simple Math Problem (矩阵快速幂,简单)
  10. [转]Delphi Form的释放和隐藏:free,hide,close
  11. ExtJs 中的ext.date
  12. 39. leetcode 326. Power of Three
  13. Alluxio 1.5集群搭建
  14. Mysql 分区详解
  15. CentOS6.9下安装rabbitmq消息队列
  16. Android Studio多渠道打包(二)
  17. 启发式合并 splay合并 线段树合并基础
  18. Scrapy爬虫学习笔记 - windows \ linux下搭建开发环境2
  19. CentOS中利用Docker安装Redis
  20. (转)python之from_bytes、to_bytes

热门文章

  1. Deepin-快捷方式设置
  2. SDUTOJ 2475 Power Strings
  3. redux-thunk
  4. AIDL/IPC Android AIDL/IPC 进程通信机制——超具体解说及使用方法案例剖析(播放器)
  5. JavaScript-创建第一个自己的类库
  6. 1 TypeScript 简介与安装
  7. 1 Angular 2 简介与 AngularJS 1.x 历史对比
  8. Highcharts报表——让你的网页上图表画的飞起
  9. OpenCV2马拉松第13圈——模版匹配
  10. 更改Mysql登录密码