A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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也没关系

21 个回复

倒序浏览
顶一下!!!!
回复 使用道具 举报
这个必须要支持啊!
回复 使用道具 举报
dw4861 来自手机 中级黑马 2015-9-5 19:36:40
板凳
互相交流,促进进步。
回复 使用道具 举报 1 0
坏了,看着面熟,但都说不上来
回复 使用道具 举报
战略性保存备用
回复 使用道具 举报
收藏。。。。。
回复 使用道具 举报
给力 不错
回复 使用道具 举报
顶一下!
回复 使用道具 举报
顶顶顶``````
回复 使用道具 举报
这个必须要支持啊!
回复 使用道具 举报
为之后的面试准备!谢谢分享
回复 使用道具 举报
都是面试经典啊!收藏
回复 使用道具 举报
顶一个!
回复 使用道具 举报
好棒!!!!!!!!
回复 使用道具 举报
lz很给力啊
回复 使用道具 举报
很有用,先赞一个!争取成为抢手的程序员
回复 使用道具 举报
顶一个!
回复 使用道具 举报
nice  mark
回复 使用道具 举报
感觉都还看不懂呢
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马