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

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

一. 运行时你是怎么理解的,怎么用

ObjC Runtime 其实是一个 Runtime 库,基本上用 C 和汇编写的,这个库使得 C 语言有了面向对象的能力。这个库做的事情就是加载类的信息,进行方法的分发和转发之类的。OC是一种面向runtime(运行时)的语言,也就是说,它会尽可能地把代码执行的决策从编译和链接的时候推迟到运行时。这给程序员写代码带来很大的灵活性,比如说你可以把消息转发给你想要的对象,或者随意交换一个方法的实现之类的。这就要求runtime能检测一个对象是否能对一个方法进行响应,然后再把这个方法分发到对应的对象去。我们拿 C 来跟 ObjC 对比一下。在 C 语言里面,一切从 main 函数开始,程序员写代码的时候是自上而下地,一个 C 的结构体或者说类吧,是不能把方法调用转发给其他对象的。这个问题其实涉及到两个概念,运行时和多态。 简单来说,运行时机制使我们直到运行时才去决定一个对象的类别,以及调用该类别对象指定方法。 多态:不同对象以自己的方式响应相同的消息的能力叫做多态。意思就是假设生物类(life)都用有一个相同的方法-eat; 那人类属于生物,猪也属于生物,都继承了life后,实现各自的eat,但是调用是我们只需调用各自的eat方法。 也就是不同的对象以自己的方式响应了相同的消息 响应了eat这个选择器。因此也可以说,运行时机制是多态的基础。比如KVO中我们就用了。

二. 你单例怎么理解怎么用的?

单例设计模式,一个类只有一个实例,而且该实例易于外界访问,方便对实例个数的控制并节约系统资源。类只能有一个实例,而且必须从一个为人熟知的访问点对其进行访问,比如工厂方法。在程序中,我需要一系列的对象,他们每一个内部都包含有一组变量和功能,是静态的,而且整个程序都只需要拥有一个该类的对象。例如:
1.登陆界面(点击多个地方都弹出相同的控制器);
2.管理数据库;
3.音效控制;
4.文件处理:
5.封装网络工具类等等...

三. 说说oc这门语言吧,和c \ c++比,你觉得哪个效率高,高到哪里了?

object_c比C++稍慢,是因为object_c的一些语言特性,比如反射,影响了执行效率。区别主要有以下一些方面。

  • 单一继承:Objective-C不支持多重继承,(同Java和Smalltalk),而C++语言支持多重继承。
  • 动态:Objective-C是动态定型(dynamicaly typed)所以它的类库比C++要容易操作。Objective-C 在运行时可以允许根据字符串名字来访问方法和类,还可以动态连接和添加类。C++ 跟从面向对象编程里的Simula67(一种早期OO语言)学派,而Objecive-C属于Smalltalk学派。
    在C++里,对象的静态类型决定你是否可以发送消息给它,而对Objecive-C来说,由动态类型来决定。Simula 67学派更安全,因为大部分错误可以在编译时查出。而Smalltalk学派更灵活,比如一些Smalltalk看来无误的程序拿到Simualr 67那里就无法通过。从很多方面来看,C++和Objective-C的差别,与其说时技术上的,不如说是思维方式上的...

四. 代理,通知,KVO 各有什么优缺点

代理优势:
1.语法严格,将要监听的事件必须是delegate协议中有清晰的定义
2.如果delegate中的一个方法没有实现那么就会出现编译警告/错误
3.在一个应用中的控制流程是可跟踪的并且是可识别的;
4.在一个控制器中可以定义定义多个不同的协议,每个协议有不同的delegate
5.没有第三方对象要求保持/监视通信过程。
代理缺点
1.需要编写很多代码.

  1. 定义delegate属性时,需要注意strong\weak的问题.
    3.一般用于父子关系,层级结构不能太复杂.

通知优点
1.不需要编写太多代码,实现比较简单.
2.对于一个发出的通知,多个对象能够做出反应,即1对多的方式实现简单.
3.controller能够传递context对象(dictionary),context对象携带了关于发送通知的自定义的信息
4.层级结构比较深的时候用.
通知缺点
1.在编译期不会检查通知是否能够被观察者正确的处理;
2.在释放注册的对象时,需要在通知中心取消注册;
3.在调试的时候应用的工作以及控制过程难跟踪;
4.观察者需要提前知道通知名称.
5.通知发出后,controller不能从观察者获得任何的反馈信息。

KVO优点
1.能够提供一种简单的方法实现两个对象间的同步。
2.能够对非我们创建的对象,即内部对象的状态改变作出响应.
KVO缺点
1.我们观察的属性必须使用strings来定义。因此在编译器不会出现警告以及检查;
2.它只能用来对属性作出反应,而不会用来对方法或者动作作出反应.
3.需要手动移除观察者。

五. 怎么实现在一个线程中同时执行两个任务?

怎么都做不到

六. BASE64的用法?

BASE64是网络传输中最常用的编码格式 - 用来将二进制的数据编码成字符串的编码方式.
1> 能够编码,能够解码.
2> 被很多的加密算法作为基础算法.

七. 什么是消息推送

可以绕过运营商,通过标准TCP/IP网络直接向这些手机发送消息.这些消息就称为推送消息.推送消息是通过Apple和Google掌控的互联网服务器发送的.推送消息从根本上就是设计用于与应用程序通信的.它们可以发送文本,多媒体文件和特定于应用程序的数据,例如警告声音和显示在应用程序图标上的标记等.

八. 使用coredata有哪几种持久化存储机制

  • 属性列表
  • 对象归档
  • 数据库存储

九. 协议是什么 有什么作用

一系列方法的声明,某个类遵守了某个协议就拥有了该协议的所有方法的声明.就必须实现协议中规定的@require的方法.

十.类变量的@protected, @private,@public, @package声明各有什么含义

  • @public本类\子类\在其他类中都能访问
  • @protected本类\子类中访问
  • @private 私有的,只有本类中能访问
  • @package 本包内使用,跨包不可以.

纯手动 有地方是个人理解 有误的地方希望大家能给指出 谢谢
大家面试中遇到的问题 也可以留言分享
如果您喜欢 或者对您有点帮助 希望点一下喜欢 谢谢了~~

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

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,133评论 30 470
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,598评论 18 399
  • iOS面试小贴士 ———————————————回答好下面的足够了------------------------...
    不言不爱阅读 1,968评论 0 7
  • 多线程、特别是NSOperation 和 GCD 的内部原理。运行时机制的原理和运用场景。SDWebImage的原...
    LZM轮回阅读 2,004评论 0 12
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,633评论 18 139