面试二

1、KVO内部实现原理?

①.KVO是基于runtime机制实现的。
②.当某个类的对象第一次被观察时,系统就会在运行期动态的创建该类的一个派生类,在这个派生类中重写基类中任何被观察属性的setter方法。
派生类在被重写setter方法中实现了真正的通知机制。(Person->NSKVONotification Person)

2、自动释放池如何实现?

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

3、block在ARC中和MRC中的方法有何区别?需要注意什么?

①.对于没有引用外部变量的Block,无论在ARC还是MRC下,类型都是NSGlobalBlock,这种类型的block可以理解为一种全局的block,不需要考虑作用域的问题。同时,对它进行Copy和Retain操作也是无效的。
②.避免循环引用。
根据isa指针,block一共有3种类型的block
_NSConcreteGlobalBlock
全局静态
_NSConcreteStackBlock
保存在栈中,出函数作用域就销毁
_NSConcreteMallocBlock
保存在堆中,retainCount == 0销毁

4、非自动内存管理情况下怎么做单例模式。

创建一个单例对象的静态实例,并初始化为nil。
创建一个类的类工厂方法,当且仅当这个类的实例为nil时生成一个类的实例。
实现NScopying协议,覆盖allocWithZone:方法,确保用户在直接分配对象时,不会产生另一个对象。
覆盖release、autorelease、retain、retainCount方法,确保单例的状态。

5、cocoa和cocoa touch?

cocoa包含Foundation和AppKit框架,可用于开发Mac
OS X系统的应用程序
cocoa touch包含Foundation和UIKit框架,可用于开发iPhone OS 系统的应用程序
Cocoa时Mac OS X的开发环境,cocoa Touch是Iphone OS的开发环境

6、介绍一下XMPP?

基于XML的点对点通讯协议,实现通讯功能.
优点:可以跨平台开发.
缺点:丢包,只能发文字(图片发送发的是链接).

7、简述对UIView.UIWindow和CALayer的理解.

UIWindow是应用的窗口,继承于UIResponder.
UIView继承于UIView,是创建窗口中的一个视图,可以响应交互事件.一个程序只有一个主window,可以有多个window.
CALayer图层,一个view可有多个图层,不可以响应事件.

8、iOS类是否可以多继承,如果没有,怎么实现?

不可以多继承.
可以通过类目,延展,协议实现多继承.
类目:类目也叫分类,英文category,在没有原类.m文件的基础上,给该类添加方法.类目里不能添加实例变量,不能添加和原始类方法名相同的方法,否则会发生覆盖.一个类可以添加多个类目,类目中的方法可以成为原始类的一部分,和原始类方法级别相同,可以被子类继承.
延展:Extension,是一种特殊形式的类目,主要是在一个类的.m里面声明与实现.作用:就是给某类添加私有方法或者私有变量.
虽然延展是给一个类定义私有方法,但是OC没有绝对的私有方法,其实还是可以调用的,延展里面声明的变量只能在该类内部使用,外界访问不了.如果是新建文件建的的某类延展.h文件,则不能添加实例变量,如果括号里没有类目名,则认为延展里面的方法为全都必须实现,如果有,则可选实现.
类目写的方法必须实现,延展写的方法非必须.

9、线程同步和异步的区别?ios中如何实现线程的同步?

同步:任务顺序执行,下一个任务依赖于上一任务的完成.
异步:任务执行顺序不定,一起执行.
实现:设置依赖:NSOpreationQueue GCD中的串行队列.

10、ios 平台怎么做数据的持久化?coredata 和sqlite有无必然联系?coredata是一个关系型数据库吗?

答:iOS 中可以有四种持久化数据的方式:属性列表(plist)、对象归档、SQLite3 和Core Data;core data 可以使你以图形界面的方式快速的定义app 的数据模型,同时在你的代码中容易获取到它。coredata 提供了基础结构去处理常用的功能,例如保存,恢复,撤销和重做,允许你在app 中继续创建新的任务。在使用core data 的时候,你不用安装额外的数据库系统,因为core data 使用内置的sqlite 数据库。core data 将你app 的模型层放入到一组定义在内存中的数据对象。coredata 会追踪这些对象的改变,同时可以根据需要做相反的改变,例如用户执行撤销命令。当core data 在对你app 数据的改变进行保存的时候,core data 会把这些数据归档,并永久性保存。mac os x 中sqlite 库,它是一个轻量级功能强大的关系数据引擎,也很容易嵌入到应用程序。可以在多个平台使用,sqlite 是一个轻量级的嵌入式sql 数据库编程。与core data 框架不同的是,sqlite 是使用程序式的,sql 的主要的API 来直接操作数据表。Core Data 不是一个关系型数据库,也不是关系型数据库管理系统(RDBMS) 。虽然Core Dta 支持SQLite 作为一种存储类型,但它不能使用任意的SQLite 数据库。Core Data 在使用的过程种自己创建这个数据库。Core Data 支持对一、对多的关系。

11、死锁的4个必要条件

答:互斥、请求保持、不可剥夺、环路

12、 KVO内部实现原理

KVO是基于runtime机制实现的
当某个类的对象第一次被观察时,
系统就会在运行期动态地创建该类的一个派生类,在这个派生类中重写基类中任何被观察属性的
setter 方法。
派生类在被重写的setter 方法实现真正的通知机制(Person NSKVONotifying_Person)

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

推荐阅读更多精彩内容

  • category 和 extension 的区别• category :分类有名字,类扩展没i有分类名字,是一种特...
    JonesCxy阅读 294评论 0 1
  • category 和 extension 的区别• category :分类有名字,类扩展没i有分类名字,是一种特...
    WSGNSLog阅读 174评论 0 1
  • • 深拷贝同浅拷贝的区别:浅拷贝是指针拷贝,对一个对象进行浅拷贝,相当于对指向对象的指针进行复制,产生一个新的指向...
    WSGNSLog阅读 1,227评论 0 1
  • 父类实现深拷贝时,子类如何实现深度拷贝。父类没有实现深拷贝时,子类如何实现深度拷贝。• 深拷贝同浅拷贝的区别:浅拷...
    JonesCxy阅读 989评论 1 7
  • JavaWeb开发实战 - Filter篇
    FX_SKY阅读 245评论 0 0