3. __block在arc和非arc下含义一样吗?
是不一样的。
在MRC中block variable在block中使用是不會retain的
但是ARC中block則是會Retain的。
取而代之的是用weak或是unsafe_unretained來更精確的描述weak reference的目的
其中前者只能在iOS5之後可以使用,但是比較好 (該物件release之後,此pointer會自動設成nil)
而後者是ARC的環境下為了相容4.x的解決方案。
所以上面的範例中
__block MyClass* temp = …;// MRC環境下使用
__weak MyClass* temp = …;// ARC但只支援iOS5.0以上的版本
__unsafe_retained MyClass* temp = …;//ARC且可以相容4.x以後的版本
5. 描述一个你遇到过的retain cycle例子。(别撒谎,你肯定遇到过)
self.completionHandler = ^{
// 有 retain block,直接用 self 會造成 retain cycle
NSLog(@"%@", self);
}
MyViewController *myController = [[MyViewController alloc] init...];
[self presentViewController:myController animated:YES completion:self.completionHandler];
當有 retain block 時,應該使用 weakSelf
__weak typeof(self) weakSelf = self;
self.completionHandler = ^{
// 打破 retain cycle
NSLog(@"%@", weakSelf);
};
MyViewController *myController = [[MyViewController alloc] init...];
[self presentViewController:myController animated:YES completion:self.completionHandler];
11. 使用drawRect有什么影响?(这个可深可浅,你至少得用过。。)
12. ASIHttpRequest或者SDWebImage里面给UIImageView加载图片的逻辑是什么样的?(把UIImageView放到UITableViewCell里面问更赞)
13. 麻烦你设计个简单的图片内存缓存器(移除策略是一定要说的)
14. 讲讲你用Instrument优化动画性能的经历吧(别问我什么是Instrument)
15. loadView是干嘛用的?
16. viewWillLayoutSubView你总是知道的。。
17. GCD里面有哪几种Queue?你自己建立过串行queue吗?背后的线程模型是什么样的?
18. 用过coredata或者sqlite吗?读写是分线程的吗?遇到过死锁没?咋解决的?
19. http的post和get啥区别?(区别挺多的,麻烦多说点)
20. 我知道你大学毕业过后就没接触过算法数据结构了,但是请你一定告诉我什么是Binary search tree? search的时间复杂度是多少?我很想知道!
网友评论