专注iOS开发

面试题(转)

2017-09-03  本文已影响28人  b470b9fc7145

下面是我准备的面试题,因为都是学生,我一般是先从他简历和介绍里挖掘下他擅长的再对应的问些准备的题。

开场

综合

计算机基础

线程

编译器

网络

内存

存储

数据结构

基础算法题

智力题

iOS

OC基础

iOS优化

动画

内部实现原理

实例实现

答案

autoreleasePool的对象是当前runloop迭代结束时释放的,而他能够释放的原因是系统在每一个runloop迭代中都加入了自动释放池push和pop

/* @autoreleasepool */ {
    void *atautoreleasepoolobj = objc_autoreleasePoolPush();
    // 用户代码,所有接收到 autorelease 消息的对象会被添加到这个 autoreleasepool 中
    objc_autoreleasePoolPop(atautoreleasepoolobj);
}

因此,单个 autoreleasepool 的运行过程可以简单地理解为 objc_autoreleasePoolPush()[对象 autorelease]objc_autoreleasePoolPop(void *) 三个过程。

autoreleasepool实现的原理

上一篇下一篇

猜你喜欢

热点阅读