• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ios > Objective-C内存管理面试题一道

Objective-C内存管理面试题一道

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了内存管理,linux内存管理,内存管理软件,java内存管理,android内存管理机制等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: Objective-C内存管理面试题一道
描述:

下面关于Objective-C内存管理的描述错误的是
A 当使用ARC来管理内存时,代码中不可以出现autorelease
B autoreleasepool 在 drain 的时候会释放在其中分配的对象
C 当使用ARC来管理内存时,在线程中大量分配对象而不用autoreleasepool则可能会造成内存泄露
D 在使用ARC的项目中不能使用NSZone

= =。。
网上看到的,参考答案为A.

我觉得选C来的~

不知道A错在哪里了?


解决方案1:

C的描述是对的,在遇到需要大量创建对象的地方使用autoreleasepool可以加快对象释放的速度。
如果说A是错的,那只能是说明出题者想考你ARC的原理其实是编译器自动帮你在代码中加入autorelease等代码。其实在ARC的项目中写autorelease连编译都通不过,这样想得话A其实也是对的。
不过既然其他3个都是对的,也只能选A了。

解决方案2:

因为ARC是编译器特性,而不是iOS运行时特性,更不是其他语言中的垃圾收集器。
所以这就意味这它只能处理在编译时就确定的内存管理,所用的机制就是引用计数。
换句话来讲,他的内存释放不是强制的,比如内存相互引用,动态引用等会导致引用计数不会立刻置0,所以这个时候显式释放是有必要的。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • iOS中的NSDictionary在内存中是如何存储的?
  • Objective-C内存管理面试题一道
  • 关于iOS内存管理的问题

相关文章

  • 2017-06-05 请教ios音乐播放时,界面动态显示图片的问题?动不起来我的图片。
  • 2017-06-05 iphone在drawRect中使用UIGraphicsGetCurrentContext画矩形,边框外有1像素的多余?
  • 2017-06-05 在acontroller里面如何调用bcontroller里面的一个方法,
  • 2017-06-05 删除文件或文件夹时出错AppCode删除文件警告
  • 2017-06-05 为什么WXInvocationConfig这个抽象类会使用单例模式?
  • 2017-06-05 UIButton的imageView改变transform属性使图片旋转45度时,图片消失了?
  • 2017-06-05 UICollectionView滚动到指定cell的机制问题
  • 2017-06-05 张馨予露全乳删除删除textfiled删除字符后,字符还显示
  • 2017-06-05 深圳iOSerMeetup——让iOS更有意思
  • 2017-06-05 WebApp和MobileApp在新浪微博开放平台公用一个AppKey可以么?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • iOS10编译器报错
    • 张馨予露全乳删除删除textfiled删除字符后,字符还显示
    • iPad越狱
    • ios7通知栏天气小程序怎么推送通知消息到通知栏
    • psp模拟器怎么用xcode71怎么调整模拟器界面大小?
    • 如何解决ReactNative中使用Linking调用iOS系统电话功能出现错误?
    • android服务运行状态UIStackView运行后无法正确的显示布局
    • 如何让UICollectionView第一组头部显示图片和按钮第二组数据的头部显示其他的标题
    • (swift)关于iOS,testFlight使用疑惑
    • 禁止get方法调用在另一个类调用方法无效?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有