黑马程序员技术交流社区
标题:
就业面试(摘自招聘一个靠谱的 iOS 程序员)
[打印本页]
作者:
夜空守望者
时间:
2015-9-5 10:02
标题:
就业面试(摘自招聘一个靠谱的 iOS 程序员)
32. objc使用什么机制管理对象内存?
通过 retainCount 的机制来决定对象是否需要释放。 每次 runloop 的时候,都会检查对象的 retainCount,如果retainCount 为 0,说明该对象没有地方需要继续使用了,可以释放掉了。
33. ARC通过什么方式帮助开发者管理内存?
编译时根据代码上下文,插入 retain/release
34. 不手动指定autoreleasepool的前提下,一个autorealese对象在什么时刻释放?(比如在一个vc的viewDidLoad中创建)
分两种情况:手动干预释放时机、系统自动去释放。
1. 手动干预释放时机--指定autoreleasepool 就是所谓的:当前作用域大括号结束时释放。
2. 系统自动去释放--不手动指定autoreleasepool
Autorelease对象会在当前的 runloop 迭代结束时释放。
如果在一个vc的viewDidLoad中创建一个 Autorelease对象,那么该对象会在 viewDidAppear 方法执行前就被销毁了。
参考链接:《黑幕背后的Autorelease》
36. 苹果是如何实现autoreleasepool的?
autoreleasepool以一个队列数组的形式实现,主要通过下列三个函数完成.
1. objc_autoreleasepoolPush
2. objc_autoreleasepoolPop
3. objc_aurorelease
看函数名就可以知道,对autorelease分别执行push,和pop操作。销毁对象时执行release操作。
37. 使用block时什么情况会发生引用循环,如何解决?
一个对象中强引用了block,在block中又使用了该对象,就会发射循环引用。 解决方法是将该对象使用__weak或者__block修饰符修饰之后再在block中使用。
1. id weak weakSelf = self; 或者 weak __typeof(&*self)weakSelf = self该方法可以设置宏
2. id __block weakSelf = self;
38. 在block内如何修改block外部变量?
默认情况下,在block中访问的外部变量是复制过去的,即:写操作不对原变量生效。但是你可以加上__block来让其写操作生效,示例代码如下:
__block int a = 0;
void (^foo)(void) = ^{
a = 1;
}
f00();
//这里,a的值被修改为1
43. 苹果为什么要废弃dispatch_get_current_queue?
dispatch_get_current_queue容易造成死锁
52. IBOutlet连出来的视图属性为什么可以被设置成weak?
参考链接: Should IBOutlets be strong or weak under ARC?
文章告诉我们:
因为既然有外链那么视图在xib或者storyboard中肯定存在,视图已经对它有一个强引用了。
不过这个回答漏了个重要知识,使用storyboard(xib不行)创建的vc,会有一个叫_topLevelObjectsToKeepAliveFromStoryboard的私有数组强引用所有top level的对象,所以这时即便outlet声明成weak也没关系
作者:
羊口羊口羊
时间:
2015-9-5 11:02
顶一下!!!!
作者:
唐肖虎
时间:
2015-9-5 19:33
这个必须要支持啊!
作者:
dw4861
时间:
2015-9-5 19:36
互相交流,促进进步。
作者:
七爷上课前
时间:
2015-9-5 19:53
坏了,看着面熟,但都说不上来
作者:
lxszl
时间:
2015-9-5 21:12
战略性保存备用
作者:
靳小龙
时间:
2015-9-5 21:14
收藏。。。。。
作者:
Music_棍棍
时间:
2015-9-5 21:23
给力 不错
作者:
王鹏华ios0826
时间:
2015-9-5 21:25
顶一下!
作者:
驴小叔
时间:
2015-9-5 21:27
顶顶顶``````
作者:
一丢丢大人
时间:
2015-9-5 21:57
这个必须要支持啊!
作者:
0826iOS_sunzhen
时间:
2015-9-6 00:15
都是面试经典啊!收藏
作者:
荣荣
时间:
2015-9-6 06:06
顶一个!
作者:
lixianzhu0712
时间:
2015-9-6 08:59
好棒!!!!!!!!
作者:
a124113798
时间:
2015-9-6 11:19
lz很给力啊
作者:
荣荣
时间:
2015-9-7 00:44
很有用,先赞一个!争取成为抢手的程序员
作者:
yuan121
时间:
2015-9-7 00:51
顶一个!
作者:
tr2e
时间:
2015-9-7 09:17
nice mark
作者:
jianjiao
时间:
2015-9-7 09:35
感觉都还看不懂呢
作者:
王鹏华ios0826
时间:
2015-9-7 21:25
珍藏!互相交流!
作者:
kylmetz
时间:
2015-9-7 21:37
了解了,收藏了~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2