iOS面试题-每日十道-第十二天

有误的地方 欢迎高手能给指出

一. 关键字volatile有什么含义?并给出三个不同例子

一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了.
精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份.
下面是volatile变量的几个例子:

  • 并行设备的硬件寄存器(如:状态寄存器)
  • 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)
  • 多线程应用中被几个任务共享的变量

二.对象是什么时候被release的?

引用计数为0时. autorelease实际上只是把对release的调用延迟了,对于每一个Autorelease,系统只是把该Object放入了当前的 Autoreleasepool中,当该pool被释放时,该pool中的所有Object会被调用Release.对于每一个Runloop,系统会隐式创建一个Autoreleasepool,这样所有的release pool会构成一个象CallStack一样的一个栈式结构,每一个Runloop结束时,当前栈顶的Autoreleasepool会被销毁,这样这 个pool里的每个Object(就是autorelease的对象)会被release.那什么是一个Runloop呢?一个UI事件,Timercall, delegate call,都会是一个新的Runloop

三26、iOS有没有垃圾回收机制?

iOS在Objective-c 2.0之后,也提供了垃圾回收机制.但是在iOS移动终端设备中,并不支持垃圾回收机制.
因此.iPhone并不能对内存进行自动垃圾回收处理(autorelease).因此需要注意 垃圾回收机制并不是ARC,ARC也是需要管理内存的,只不过是隐式的管理内存,编译器会再适当的地方自动插入retain,release和 autorelease消息.

四. ViewController的didReceiveMemoryWarning是在什么时候调用的?默认的操作是什么?

当程序接到内存警告时View Controller将会收到这个消息:didReceiveMemoryWarning从iOS3.0开始,不需要重载这个函数,把释放内存的代码放到viewDidUnload中去。这个函数的默认实现是:检查controller是否可以安全地释放它的view(这里加粗的view指的是controller的view属性),比如view本身没有superview并且可以被很容易地重建(从nib或者loadView函数)。如果view可以被释放,那么这个函数释放view并调用viewDidUnload。你可以重载这个函数来释放controller中使用的其他内存。但要记得调用这个函数的super实现来允许父类(一般是UIVIewController)释放view。如果你的ViewController保存着view的子view的引用,那么,在早期的iOS版本中,你应该在这个函数中来释放这些引用。而在iOS3.0或更高版本中,你应该在viewDidUnload中释放这些引用。

五. delegate和notification区别,分别在什么情况下使用

delegate针对one-to-one关系,并且receiver可以返回值给sender;
notification 可以针对one-to-one/many/none,receiver无返回值给sender

六. 内存管理 Autorelease retain copy assign的set方法和含义

  • 初始化对象(alloc/init)的对象 你需要释放(release)它 例如NSMutableArray aArray = [[NSArray alloc] init];后,需要[aArray release];
  • 你retain或copy的,你需要释放它。例如:
    [aArray retain]后,需要[aArray release];
  • 被传递(assign)的对象,你需要斟酌的retain和release.例如:
    obj2 = [[obj1 someMethod] autorelease];对象2接受对象1的一个自动释放的值,或传递一个基本数据类型(NSInteger,NSString)时:你或希望将对象2进行retain,以防止它在被使用之前就被自动释放掉.但是在retain后,一点要在适当的时候进行释放.

七. 谈谈你对索引计数的理解

retain值 = 索引计数(ReferenceCounting) NSArray对象会retain(retain值加一)任何数组中的对象.当NSArray被卸载(dealloc)的时候,所有数组中的对象会被执行一次释放(retain值减一).不仅仅是NSArray,任何收集类 (CollectionClasses) 都执行类似操作.例如NSDictionary,甚至UINavigationController.Alloc/init建立的对象,索引计数为1.无需将其再次retain[NSArray array]和[NSDate date]等“方法”建立一个索引计数为1的对象,但是也是一个自动释放对象所以是本地临时对象,那么无所谓了.如果是打算在全Class中使用的变量(iVar),则必须retain它.缺省的类方法返回值都被执行了“自动释放”方法.(如上中的NSArray)在类中的卸载方法“dealloc”中,release所有未被平衡的NS对象.(所有未被autorelease,而retain值为1的)

八. 异步请求最大数目是多大,为什么只能这么多

这个数量是跟cpu有关的,并发性取决于cpu核数,每个核只能同时处理一个任务.4核cpu理论上可以并发处理4个任务,如果按http来算就是4个请求,但是cpu是抢占式资源,所以一般来说并发量是要根据任务的 耗时和cpu的繁忙度来计算4个左右只是个经验值你开10个短耗时的任务和几个长耗时任务的效率是不同的- -..一般来说估算这个量的最大效率估算公示是cpu核数*2-1,这个公式是当时对集群进行压测得到的结论.cpu抢占时间跟任务时长…开启这个数量的 线程可以最大化的榨干cpu一个道理。cpu不可能都被抢去做connection.iOS是cpu密集型的消耗?。这个大概知道就行了,也不会有人特 别在意吧…cpu核数2-1那个是做淘宝的java团队压测得到的线程最优数?,放在iOS上也多少适用…一般来说不超过这个量就好,线程不是起的越多越好,线程数就是…cpu来决定的

九. 什么是NSManagedObject模型

NSManagedObject是NSObject的子类 ,也是coredata的重要组成部分,它是一个通用的类,实现了core data 模型层所需的基本功能,用户可通过子类化NSManagedObject,建立自己的数据模型

十.简述NULL nil NIL NSNull的区别

  • NULL是c语言中的空指针.
  • nil是OC中指向空对象的指针
  • Nil是OC指向类的空指针
  • NSNull是数字或字典集合对象中表示空值对象.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,036评论 29 470
  • 1.OC里用到集合类是什么? 基本类型为:NSArray,NSSet以及NSDictionary 可变类型为:NS...
    轻皱眉头浅忧思阅读 1,295评论 0 3
  • 转:http://www.cocoachina.com/programmer/20151019/13746.htm...
    Style_伟阅读 1,234评论 0 3
  • 注:此文章来源:Job_Yang 的简书 1. Object-c的类可以多重继承么?可以实现多个接口么?Categ...
    广益散人阅读 1,315评论 0 13
  • 路边的玉兰又开了 玉兰下的你,在哪呢? 景点的门票开售了 芊芊玉手哪儿去了? 夜摊的灯光亮起来了 张开的手臂,拥抱...
    零落的风阅读 91评论 0 0