iOS之《Effective Objective-C 2.0》读书笔记(42)
来源:互联网 发布:希捷同步软件 编辑:程序博客网 时间:2024/06/04 18:49
第42条:多用GCD,少用performSelector系列方法
1.直接调用某方法
- 两种方式:
//方法一: -(id)performSelectoer:(SEL)selector//方法二: [object selectorName];
- 方法一的缺点:内存管理容易有缺失–>selector是在running time才决定的,这就是它的强大之处。这就等于在动态绑定之上再次使用动态绑定,因而可以实现出下面这种功能
SEL selector;if ( / some condition / ) { selector = @selector(newObject);//newObject返回一个new object} else if ( / some other condition / ) { selector = @selector(copy); // copy根据当前object copy出一个新的object} else { selector = @selector(someProperty));// someProperty可以认为是对象的某个property}id ret = [object performSelector:selector];
2.发消息时顺便传递参数
- 此方法使用的局限性:
(1)由于参数类型是id,所以传入的参数必须是对象才行。如果选择子所接受的参数是整数或浮点数,那就不能采用这些方法了
(2)选择子最多只能接受两个参数,在参数不止两个的情况下,则没有对应的performSelector方法能够执行这种选择子
-(id)performSelector:(SEL)selector withObject:(id)object; -(id)performSelector:(SEL)selector withObject:(id)objectA withObject:(id)objectB;
3.提供的线程功能
- 优先使用GCD
//方法一: -(void)performSelector:(SEL)selector onThread:(NSThread *)thread waitUntilDone:(BOOL)wait; -(void)performSelectorOnMainThread:(SEL)selector withObject:(id)argument waitUnitlDone:(BOOL)wait; //方法二:dispatch_async(dispatch_get_main_queue(), ^{ [self doSomething];});
4.延迟执行:
- 优先使用GCD
//方法一:-(void)performSelector:(SEL)selector withObject:(id)argument afterDelay:(NSTimeInterval)delay; //方法二:dispatch_time_t time = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC));dispatch_after(time, dispatch_get_main_queue(), ^{ [self doSomething];});
阅读全文
0 0
- iOS之《Effective Objective-C 2.0》读书笔记(42)
- <iOS读书笔记>之Effective Objective-C 2.0
- iOS之《Effective Objective-C 2.0》读书笔记(1)
- iOS之《Effective Objective-C 2.0》读书笔记(2)
- iOS之《Effective Objective-C 2.0》读书笔记(3)
- iOS之《Effective Objective-C 2.0》读书笔记(4)
- iOS之《Effective Objective-C 2.0》读书笔记(5)
- iOS之《Effective Objective-C 2.0》读书笔记(6)
- iOS之《Effective Objective-C 2.0》读书笔记(7)
- iOS之《Effective Objective-C 2.0》读书笔记(8)
- iOS之《Effective Objective-C 2.0》读书笔记(9)
- iOS之《Effective Objective-C 2.0》读书笔记(10)
- iOS之《Effective Objective-C 2.0》读书笔记(11)
- iOS之《Effective Objective-C 2.0》读书笔记(12)
- iOS之《Effective Objective-C 2.0》读书笔记(13)
- iOS之《Effective Objective-C 2.0》读书笔记(14)
- iOS之《Effective Objective-C 2.0》读书笔记(16)
- iOS之《Effective Objective-C 2.0》读书笔记(17)
- 高级算法日记9:图(2)
- 树回归
- ffmpeg编解码详细过程
- 网络游戏服务器断编程学习之多线程
- 449. Serialize and Deserialize BST
- iOS之《Effective Objective-C 2.0》读书笔记(42)
- Java菜鸟学习日记35
- bandit 算法资料大全
- 特定数量的商品如何在高并发下进行库存锁定 ?
- checkbox的全选
- 用户认证
- angular的ng-grid使用中遇到的一些坑
- oracle 数据库提高查询的方法
- 题目描述:给定一个字符串,求出其所有可能的字符组合. 比如:abc 其所有组合是:a,b,c,ab,ac,bc,abc