iOS 强制传参 NSInvocation
2016-01-08 16:46
351 查看
转自:http://my.oschina.net/u/2340880/blog/398552
IOS NSInvocation应用与理解
发表于9个月前(2015-04-10 14:52) 阅读(1451) | 评论(0)0人收藏此文章,我要收藏
赞0
摘要 NSInvocation是IOS消息传递和方法调用的一个类,简单用法总结。
IOS中有一个类型是SEL,它的作用很相似与函数指针,通过performSelector:withObject:函数可以直接调用这个消息。但是perform相关的这些函数,有一个局限性,其参数数量不能超过2个,否则要做很麻烦的处理,与之相对,NSInvocation也是一种消息调用的方法,并且它的参数没有限制。这两种直接调用对象消息的方法,在IOS4.0之后,大多被block结构所取代,只有在很老的兼容性系统中才会使用,简单用法总结如下:
一、初始化与调用
在官方文档中有明确说明,NSInvocation对象只能使用其类方法来初始化,不可使用alloc/init方法。它执行调用之前,需要设置两个方法:setSelector: 和setArgument:atIndex:
?
调用多参数的方法,我们可以这样写:
?
?
二、NSInvocation的返回值
NSInvocation对象,是可以有返回值的,然而这个返回值,并不是其所调用函数的返回值,需要我们手动设置:
?
三、关于内存
可以注意到- (void)retainArguments;这个方法,它会将传入的所有参数以及target都retain一遍。
相关文章推荐
- iOS学习之Socket使用简明教程- AsyncSocket
- iOS 麦克风访问权限
- iOS tabbar 图片尺寸
- IOS8键盘模拟器无法显示,真机可以
- 坐标系转换 iOS
- iOS - 线程管理
- js调用Android、ios原生代码
- iOS中NSDictionary和NSMutableDictionary的用法
- iOS 记录系统运行日志到指定文件目录
- iOS开发拓展篇—音效的播放
- iOS真机调试打印并保存控制台输出日志
- FFmpeg在iOS上完美编译
- iOS_正则表达式判断手机型号、邮箱、手机号、身份证、昵称、密码等
- iOS开发答疑
- 简单的照片查看浏览
- 图形库Core Plot
- iOS调试技巧
- iOS序列化之json(待总结。。。)
- Masonry布局框架的使用
- iOS 使cell的分割线显示完全