Object C学习笔记18-SEL,@ selector,Class,@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--转的更多相关文章
- Object C学习笔记18-SEL,@ selector,Class,@class
本章是对上一章<<Object C学习笔记17-动态判断和选择器>>的一点补充,所以比较简单点. 一. SEL 类型 在上一篇介绍了几个方法,都只是介绍了其使用方式但是没有具体 ...
- Object C学习笔记24-关键字总结
学习Object C也有段时间了,学习的过程中涉及到了很多Object C中的关键字,本文总结一下所涉及到的关键字以及基本语法. 1. #import #import <> 从syste ...
- Object C学习笔记24-关键字总结(转)
学习Object C也有段时间了,学习的过程中涉及到了很多Object C中的关键字,本文总结一下所涉及到的关键字以及基本语法. 1. #import #import <> 从syste ...
- Object C学习笔记17-动态判断和选择器
当时学习Object C的时被人鄙视了一顿,说使用.NET的思想来学Object C就是狗屎:不过也挺感谢这位仁兄的,这让我学习的时候更加的谨慎.今天的学习笔记主要记录Object C中的动态类型相关 ...
- Object C学习笔记22-#define 用法
上一篇讲到了typedef 关键字的使用,可以参考文章 Object C 学习笔记--typedef用法 .而在c中还有另外一个很重要的关键字#define. 一. #define 简介 在C中利用预 ...
- Object C学习笔记21-typedef用法
在上一章的学习过程中遇到了一个关键字typedef,这个关键字是C语言中的关键字,因为Object C是C的扩展同样也是支持typedef的. 一. 基本作用 typedef是C中的关键字,它的主要作 ...
- Ext.Net学习笔记18:Ext.Net 可编辑的GridPanel
Ext.Net学习笔记18:Ext.Net 可编辑的GridPanel Ext.Net GridPanel 有两种编辑模式:编辑单元格和编辑行. 单元格编辑: 行编辑: 可以看出,单元格编辑的时候,只 ...
- SQL反模式学习笔记18 减少SQL查询数据,避免使用一条SQL语句解决复杂问题
目标:减少SQL查询数据,避免使用一条SQL语句解决复杂问题 反模式:视图使用一步操作,单个SQL语句解决复杂问题 使用一个查询来获得所有结果的最常见后果就是产生了一个笛卡尔积.导致查询性能降低. 如 ...
- golang学习笔记18 用go语言编写移动端sdk和app开发gomobile
golang学习笔记18 用go语言编写移动端sdk和app开发gomobile gomobile的使用-用go语言编写移动端sdk和app开发https://blog.csdn.net/u01249 ...
- Object C学习笔记10-静态方法和静态属性
在.NET中我们静态使用的关键字static有着举足轻重的作用,static 方法可以不用实例化类实例就可以直接调用,static 属性也是如此.在Object C中也存在static关键字,今天的学 ...
随机推荐
- 《从0到1》读书笔记第一章"未来的挑战"第1记:把握潮流风向
这几天刚到手当前炙手可热的来自PayPal创始人Peter Thiel的<Zero to One>.中文名<从0到1>,由高玉芳翻译.中信出版社出版.由于到货时刚好有事情在忙, ...
- VS2015 android 设计器不能可视化问题解决。
近期安装了VS2015,体验了一下android 的开发,按模板创建执行了个,试下效果非常不错.也能够可视化设计.但昨天再次打开或创建一个android程序后,设计界面直接不能显示,显示错误:(可能是 ...
- NODE安装N管理出错
Windows不支持,反正我在Linux上用过,从此脱离Win坑!
- POST 请求静态文件 响应405
使用post方式请求js.html这样的静态文件一般的web服务器都会返回405 Method Not Allowed. 我测试用的web服务器用的是IIS(windows10+IIS10),理论上来 ...
- url加密并计算时间
将URL地址参数进行加密传输提高网站安全性 加密算法,直接调用就好 function keyED($txt,$encrypt_key){ $encrypt_key = md5($encrypt_key ...
- SQL Server 存储过程具体解释
SQL Server 存储过程具体解释 存储过程的优缺点 ◆长处: 运行速度更快. 存储过程仅仅在创造时进行编译,而一般SQL语句每运行一次就编译一次,所以使用存储过程运行速度更快. 存储过程用于处理 ...
- WAMP的端口修改
wamp集成了开源的利器mysql+apache+php,真的是有越来越火的趋势了,可是有些人,安装php的集成开发环境WAMP的时候,出现端口被占用了,无法连接服务器的时候, 这时,如果要修改WAM ...
- ZOJ 3962 E.Seven Segment Display / The 14th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple E.数位dp
Seven Segment Display Time Limit: 1 Second Memory Limit: 65536 KB A seven segment display, or s ...
- iptraf 网卡 ip 端口 监控 netstat 关闭端口方法
18 commands to monitor network bandwidth on Linux server – BinaryTides https://www.binarytides.com/l ...
- USACO26 moofest 奶牛集会(归并排序)
听说这题也是bzoj的3378&&poj1990,然而没有权限号交不了..poj懒得登. 题意:有n个奶牛,他们相互发出max(a[i].v,a[j].v)*abs(a[i].p-a[ ...