首页 技术 正文
技术 2022年11月6日
0 收藏 1000 点赞 383 浏览 1441 个字

内存管理、父子控制器面试题

1.建立父子关系控制器有什么用

回答:1>监听屏幕选中

2>如果想拿到你当前的很小的一个控制器所在的导航控制器必须要跟外面比较大的控制器建立父子关系,才能一层一层往上拿导航控制器

2.第三方API是怎么用的?

回答:0>大公司的开放API

1>github上面别人发布的框架

2>第三方API在官方文档都有说明,按照官方文档一步一步做

3>参考官方提供的示例程序

4>先自己创建一个工程试试,等熟悉了,在使用到项目中

3.列举现在熟悉iOS开发库和第三方开发库?

回答:友盟(包括第三方登录和分享),高德地图,百度地图,AFN,SDWebImage,MBProgressHUB、MJExtension等等

4.怎么保证多人开发进行内存泄露的检查

回答:1>使用Analyze进行代码的静态分析

2>为避免不需要的麻烦,多人开发时尽量使用ARC

5.非自动内存管理情况下怎么做单例模式

回答:创建单例设计模式的基本步骤

1>声明一个单件对象的静态实例,并初始化为nil

2>创建一个类的类工厂方法,当且仅当这个类的实例为nil时生成一个该类的实例

2>实现NScopying挟制,覆盖allocWithZone:方法,确保用户在直接分配对象时,不会产生另一个对象

3>覆盖release、autorelease、retain、retainCount方法,以此确保单例的状态。

4>在多线程的环境中,注意使用@synchronized关键字或GCD,确保静态实例被正确的创建和初始化

6.对于类方法(静态方法)默认是autorelease的,所有类方法都会这样吗?

回答:1>系统自带的绝大数类方法返回的对象,都是经过autorelease的

7.block在ARC中和MRC中的用法有什么区别,需要注意什么

回答:1>对于没有引用外部变量的Block,无论在ARC还是非ARC下,类型都是

__NSGlobalBlock__,这种类型

2>不管是ARC和MRC,block都应该用copy操作来持有

3>应该注意避免循环引用

@1>ARC:__weak/ __unscafe_unretained

@2>MRC:__block

8.什么情况下会引起内存泄露和内存溢出?

回答:内存泄露:该释放的没有释放。当程序在申请内存后,无法释放已申请的内存空间(例如一个对象或者变量使用完成后没有释放,这个对象一直占用着内存),一次内存泄露危险可以胡烈,但内存泄露堆积后果很严重,无论多少内存,迟早被占光。

内存泄露会最终导致内存溢出

内存溢出:内存满了,不够用。

当程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;

比如申请了一个int , 但给它存了long 才能存下的数,那就是内存溢出

9.[NSArray arrayWithObject:<id>] 这个方法添加对象后,需要对这个数组做释放操作吗?

回答:不需要,这个对象被释放到自动缓存池当中

10.JSON数据如何解析,和解析数据的时候有内存泄露吗?有的话如何理解

回答:1>JSON解析的方案

@1>SBJson

@2>JSONkit

@3>NSJSONSerialization

11.自动释放池底层怎么实现?

回答:自动释放池以栈的形式实现:当你创建一个新的自动释放池时,它将被添加到栈顶。当一个对象收到发送autorelease消息时,它被添加到当前线程的处于栈顶的自动释放吃中,当自动释放吃被回收时,他们从栈中被删除,并且给池子里面所有的对象都会做一次release操作

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,495
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,133
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,297