Object C学习笔记18-SEL,@ selector,Class,@class
2014-03-22 23:00
288 查看
本章是对上一章<<Object C学习笔记17-动态判断和选择器>>的一点补充,所以比较简单点。
一. SEL 类型
在上一篇介绍了几个方法,都只是介绍了其使用方式但是没有具体介绍参数:
其中有看到SEL类型。SEL相当于函数指针。下面介绍performSelector方法:
[对象 performSelector:SEL变量 withObject:参数1 withObject:参数2];
在调用respondsToSelector:@selector(method)时,这个method只有在该方法存在参数时需要 ":",如果该方法不需要参数就不需要加这个冒号。否则,编译不会报错,只是执行返回的值不对。当然如果方法有多个参数,需要多个冒号,参数有名称的需要带上参数名称。
二. @selector
@selector 其实就是选择器,使用@selector放回SELleixing,所以SEL和@selector一般都是同时使用的。
@selector方法用法如上,但是这里要注意一下如果方法有输入参数则需要使用: ,如果没有参数则不要:
如果使用可以参考上一章所述内容。
三. Class
先看看Class类型的代码如下:
从上面的代码可以看到Class 是结构类型,可以使用如下方式获取一个对象的Class
四. @class
由于头文件的相互包含及依赖关系,往往很小的改动就需要重新编译很多的文件。Object-C提供了一种方法可以减少由于依赖引起的重新编译:@class 来告诉编译器这是一个类,编译器只需要通过指针来引用它即可,并不需要知道关于这个类的更多信息。以此来减少编译工作。
通过以上代码可以看到,@class Person . 然后我们在Student 类中就可以直接引用Person这个类了。在以往的时候需要使用
#import "Person.h" 才可以。 我们使用@class 替换之前的这种方式。
一. 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 替换之前的这种方式。
相关文章推荐
- Object C学习笔记18-SEL,@ selector,Class,@class--转
- iOS开发笔记18--SEL (@selector) 原理及使用总结(二)
- Objective-C学习笔记之SEL和@selector
- HTML5混编学习笔记:Boxing Model、Selector、specificity、float/postion
- objective-C中的Class(类类型),Selector(选择器SEL),函数指针(IMP)
- OC基础学习——SEL(选择器类型)和Class的学习
- [转载]转一篇介绍classload的文章(学习笔记)
- iOS阶段学习第16天笔记(Category-NSSet-SEL-NSIndexSet 操作)
- Google Python Class 学习笔记(2) 正则表达式
- 黑马程序员之java学习笔记18
- OAF学习笔记-18- Update后页面显示不是最新的数据的解决方法
- angularjs学习笔记 ng-class
- Delphi 2010学习笔记(5)---数据类型(变量)---2011-01-18
- 【SQL Server学习笔记】18:对字符数据的处理
- jvm学习笔记(1)class文件
- java RTTI笔记 之Class学习笔记(摘自java编程思想)
- Object C学习笔记2-NSLog 格式化输出数据
- iOS学习笔记18-CoreData你懂的
- Java菜鸟学习笔记--面向对象篇(十五):Wrapper Class包装类
- swift 学习笔记1 -- json解析、网络请求、[myClass class]