- 浏览: 222298 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (109)
- IOS (15)
- 设计模式 (7)
- XML (1)
- Android (31)
- 面试经 (1)
- J2EE (3)
- android md5 加密 (2)
- android imagebutton文字实现 (1)
- 反射机制 (2)
- 基础知识 (1)
- linux (3)
- java (4)
- java基础 (2)
- 文章 (1)
- myeclipse tomcat (1)
- Hadoop (1)
- ubuntu (2)
- redmine (1)
- python (4)
- jmeter (10)
- xamarin (1)
- selenium (9)
- nexus (1)
- appium (3)
- BDD (1)
- apache2 (1)
- zabbix (2)
- python,webdriver (1)
- ajax (1)
- jmeter,正则表达式,关联 (2)
- 性能测试工具 (1)
- Django (0)
- Intelij (1)
- RAP (0)
- 性能测试 (0)
最新评论
Object-C 中的Selector 概念
Andrew Huang <bluedrum@163.com> 转载请注明作者和联络方式
在iphone程序中会大量看到@selector这样的用法。<<iphone开发基础>花了很大一个篇幅来解析这个语法,但是不知是翻译问题,还是解释过细,不大看得懂,很是不给力.直到程序用这个语法,并且仔细看了一些解析文章。才明白这一语法。
简而言之,你可以理解 @selector()就是取类方法的编号,他的行为基本可以等同C语言的中函数指针,只不过C语言中,可以把函数名直接赋给一个函数指针,而Object-C的类不能直接应用函数指针,这样只能做一个@selector语法来取.
它的结果是一个SEL类型。这个类型本质是类方法的编号(函数地址)?因此我们有如下代码。
一.取得selector值.
C函数指针
int add(int val)
{
return val+1;
}
int (* c_func)(int val); //定义一个函数指针变量
c_func = add ; //把函数addr地址直接赋给c_func
object-c的选择器,
@interface foo
-(int)add:int val;
@end
SEL class_func ; //定义一个类方法指针
class_func = @selector(add:int) ;
注意1. @selector是查找当前类的方法,而[object @selector(方法名:方法参数..) ] ;是取object对应类的相庆方法.
注意2.查找类方法时,除了方法名,方法参数也查询条件之一.
注意3. 可以用字符串来找方法 SEL 变量名 = NSSelectorFromString(方法名字的字符串);
注意4. 可以运行中用SEL变量反向查出方法名字字符串
NSString *变量名 = NSStringFromSelector(SEL参数);
二.执行selector值.
取得相庆值后,怎么处理SEL值呢,这一点仍然与函数指针一样,就是执行它
函数指针执行,(以下有几种等效形式)
*c_func(10);
c_func(10);
SEL变量的执行.用performSelecor方法来执行.
[对象 performSelector:SEL变量 withObject:参数1 withObject:参数2];
三.selector的应用场合
selector本质是跟C的回调函数一样。主要用于两个对象之间进行松耦合的通讯.这种方法很多开发环境用到。比如GTK,Delphi.基本上整个Cocoa库之间对象,控制之间通讯都是在这个基础构建的。
Andrew Huang <bluedrum@163.com> 转载请注明作者和联络方式
在iphone程序中会大量看到@selector这样的用法。<<iphone开发基础>花了很大一个篇幅来解析这个语法,但是不知是翻译问题,还是解释过细,不大看得懂,很是不给力.直到程序用这个语法,并且仔细看了一些解析文章。才明白这一语法。
简而言之,你可以理解 @selector()就是取类方法的编号,他的行为基本可以等同C语言的中函数指针,只不过C语言中,可以把函数名直接赋给一个函数指针,而Object-C的类不能直接应用函数指针,这样只能做一个@selector语法来取.
它的结果是一个SEL类型。这个类型本质是类方法的编号(函数地址)?因此我们有如下代码。
一.取得selector值.
C函数指针
int add(int val)
{
return val+1;
}
int (* c_func)(int val); //定义一个函数指针变量
c_func = add ; //把函数addr地址直接赋给c_func
object-c的选择器,
@interface foo
-(int)add:int val;
@end
SEL class_func ; //定义一个类方法指针
class_func = @selector(add:int) ;
注意1. @selector是查找当前类的方法,而[object @selector(方法名:方法参数..) ] ;是取object对应类的相庆方法.
注意2.查找类方法时,除了方法名,方法参数也查询条件之一.
注意3. 可以用字符串来找方法 SEL 变量名 = NSSelectorFromString(方法名字的字符串);
注意4. 可以运行中用SEL变量反向查出方法名字字符串
NSString *变量名 = NSStringFromSelector(SEL参数);
二.执行selector值.
取得相庆值后,怎么处理SEL值呢,这一点仍然与函数指针一样,就是执行它
函数指针执行,(以下有几种等效形式)
*c_func(10);
c_func(10);
SEL变量的执行.用performSelecor方法来执行.
[对象 performSelector:SEL变量 withObject:参数1 withObject:参数2];
三.selector的应用场合
selector本质是跟C的回调函数一样。主要用于两个对象之间进行松耦合的通讯.这种方法很多开发环境用到。比如GTK,Delphi.基本上整个Cocoa库之间对象,控制之间通讯都是在这个基础构建的。
发表评论
-
appStore上传苹果应用程序软件发布流程
2012-10-31 09:51 18151.进入开发者中心,进 ... -
iPhone的App的目录结构
2012-10-31 09:57 945iPhone的App的目录结构如下: 对于一个运 ... -
iPhone开发经典语录集锦
2012-10-30 00:50 868如果大家和我一样有感触的话,可以跟在帖子下面,最好简短并附上 ... -
ASIHTTPRequest 详解
2012-10-31 09:57 990目录 目录 发起一个同步请求 创建一个异步请求 队列请 ... -
【引用】iPhone的App的目录 【引用】iPhone-国际化Iphon
2012-11-04 21:30 919博主:易飞扬 原文链接 : http://www.yifei ... -
iphone开发之 - 启动页面设置
2012-10-31 09:58 1190不管是开发个人项目还是公司项目,大家通常都有一个需求,就 ... -
限制UITextField输入长度的方法
2013-01-26 23:04 860在 iPhone 应用里经常要限制用户输入字符的长度,比如密 ... -
【引用】iphone开发的好网站
2012-10-20 02:29 2753分享iphone开发的好网站,希望大家也能提供一些分享下 ... -
IOS开源项目汇总
2013-01-26 23:05 1430前几天看到一位会员,总结了一些开源的IOS项目,我结合自己开发 ... -
Xcode SVN配置
2012-10-19 00:14 1014Xcode SVN配置 编辑 ~/.subversion/co ... -
Iphone 图片
2012-10-13 00:08 1098如何自定义分组表视图/边框颜色的背景您需要设置UITableV ... -
iphone定位 基本知识
2012-10-04 23:54 844找到一个关于iphone定位 ... -
object c 中 retain 和copy的区别
2012-10-04 23:49 911原来简单解释过属性定义(Property) ,并且提起了简单 ... -
objective-c中property的属性
2012-10-04 23:44 911[size=large][/size][color=blue] ...
相关推荐
robot-cases-selector-plugin插件,使用指南请查看另一篇博客
Android-Ultra-Photo-Selector是一个多图片选择的开源框架,可以实现多图片的选择
Laravel开发-laravel-lang-selector Laravel创建智能多语言网站
关于XML绘图(bitmap ,shape ,layer-list ,selector ,animation)的demo
postcss前缀选择器 使用自定义命名空间.a => .prefix .a每个CSS选择器添加前缀。 目录 安装 $ npm install postcss-prefix-... exclude : [ '.c' ] , // Optional transform callback for case-by-case overrid
Android Multiple Images Selector Easy-to-use library to select images in Android application Features: select images by folders support to set max number of images to be selected allow filter images ...
前端开源库-stylelint-selector-bem-patternStylelint选择器BEM Pattern,一个利用PostSS BEM Linter功能的Stylelint插件
前端开源库-has-id-selector有ID选择器,检查CSS选择器字符串是否有ID。
前端开源库-css-selector-extractCSS选择器提取,从CSS代码中提取特定的CSS选择器
videojs-max-quality-selector Videojs插件可帮助您列出实时,自适应和渐进流中的分辨率和比特率。目录 minHeight :number showBitrates :boolean showSingleItemMenu :boolean 排序:number sortEnabled :boolean ...
Android-Ultra-Photo-Selector.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
playwright-query-selector-all方法详解
简单集成了Android-Ultra-Photo-Selector这个框架的使用,非常感谢作者,框架地址:https://github.com/AizazAZ/Android-Ultra-Photo-Selector
Laravel开发-aliyun-ems-selector 全国快速递查Laravel
MultiImageSelector是一个模仿微信的Android图片选择器类库,有选择单张图片和多张图片模式。还可以设置选择图片的最大数量。 适用eclipse版
前端开源库-matches-selector匹配选择器,检查一个DOM元素是否匹配一个给定的选择器,并提供适当的浏览器支持和单元测试。
版本6+的插件,在控制栏中添加了一个按钮,使用户可以从可用的视频质量或分辨率中进行选择。如何使用? 使用此插件需要三个主要步骤: , ,以及 。 有关每个步骤的信息,请参见以下内容。包含/要求使用[removed]...
playwright-relative-selector-源码.rar
Laravel开发-laravel-data-selector 在Laravel的雄辩之上有一个额外的层,帮助从数据库中选择和检索数据。
VP-UML Product Selector 10.0