MUSE-Questions

问题:

1.如何实现多代理回调,并且多个代理的方法都要执行?

创建中间桥接类(代理的容器类),桥接类定义单独的代理对象属性  vc提供adddelegate的方法以及存储桥接类的数组,回调的时候遍历存储桥接类的数组,依次执行协议方法。

2.事件分发原理,手势传递过程

只有继承与uiresponder的对象能够响应事件touch对应的api,事件产生后被加到uiapplication管理的事件队列中,由它来由里往外递,window-view-subview,递归传递(找到view之后调用hittest:查找view的子view),找到最合适的view(响应链第一响应者)后调用touches方法对事件进行响应,如果没有重写将事件沿着响应者链往上抛(由外往里抛一直到uiapplication,与事件传递相反),手势识别器会延迟事件向所绑定的视图传递,优先去识别手势处理touch事件

3.sd图片存储过期时间在什么时机设置?(有效时间设置)

下载结束实例化webimage的时,sdimagecache中有变量表示图片缓存的最大值和过期时间

4.kvo能监听数组么?

可以监听可变数组的长度变化,但是不能监听到数组里面某一个对象的变化,不能使用array addobject的方式添加,要使用array [mutableArrayValueForKeyPath:@“dataArray”]

5.gcd的源码理解

注意常用的几个api,汇总group,顺序执行barrir

6.masonry如何使用链式语法对autolayout进行封装的?

make.centerX.mas……()点语法实现,通过属性的方式实现多级的调用,调用的方法是对象的block属性。将block作为属性进行访问、block的返回参数是自定义对象

7.如何自己实现cell高度缓存,autolayout使用系统计算高度有什么问题?

tableview设置了UITableViewAutomaticDimension之后autolayout会自动计算cell的高度但是不会缓存这个高度值,在cellforrowatindexpath中计算高度做缓存。cellforrow与heightforrow的调用顺序:设置了预估高度前者在前、否则后者在前会轮训一遍计算contentsize

8.tableview优化,设置透明度是怎么影响gpu性能的?

tableview的cell复用,缓存cell的高度不用每次都要计算,计算的时候放在异步线程中,图片异步加载,缓存资源,懒加载,布局的时候不要太多层级,不要动态的添加subview提前添加完毕然后控制显影 因为每次添加之后会重新布局autolay消耗性能,减少绘图操作;预渲染图像,不要使用透明背景会导致混合操作(gpu负责),这个过程很耗时

9.iOS9之前tableview的代理为啥用assign?

之前的delegate需要在dealloc中对代理设置为nil,

assign修饰delegate不对引用计数操作,使用之后没有设置为nil可能会产生野指针,而weak会自动设置为nil。

10.runtime使用场景有哪些?

方法交换,获取属性列表方法列表,动态创建类创建属性。。。

11.jsonmodel实现细节

12.如何避免外界通过kvc访问成员变量?

将accessInstanceVariablesDirectlygetter方法返回NO,

kvc本质上是操作方法列表以及在内存中查找实例变量,可以利用此特性访问类的私有变量。

14.coretext,coreimage如何使用

15.gcd如何去取消一个正在执行的请求任务

ios8之后可以调用dispatch_block_cancel来取消还没有执行的任务

模拟NSOperationQueue定义外部变量,用来标记block是否需要取消,即外部变量为NO时,可以在block里面返回(感觉这个操作没什么意义)

16.NSOperationQueue 添加的任务默认是怎么执行,同步还是异步

可设置优先级(operation设置完依赖之后再比较优先级),并发数量

NSOperation默认是同步执行,将operation添加到队列中是异步执行的,给operation添加依赖 addDependency,即在其他operation执行完之后在执行

17.[obj someMethod],oc方法调用的原理是什么?

oc中方法调用最终转换成runtime的c语言函数objc_msgSend(id receiver,SEL op,),信息发送后会在receiver类对象的方法列表中找这个方法。

首先去该类的cache中查询,找到返回;没找到就去methodlist中查找,找到就将方法的IMP返回并将IMP存入cache中;如果还没有找到,通过super_calss找到父类,在父类的methodlist中查找;如果父类中没有找到进行动态决议和消息转发;如果动态决议和消息转发返回NO和nil,就抛出异常

18.NSOperationQueue 中的串行指的是最大并发数为1,默认是-1即并行

19.NSOperationQueue中执行完A,B 再去执行C任务如何实现

可以对任务设置依赖

20.静默推送

iOS7之后在后台任务增加了特性:后台获取、推送唤醒、后台传输。

需求:在应用退到后台时某一个时间点唤醒设备更新UI,在用户下次点击应用图标进入应用的时候就能看到已经更新好的UI了。

后台的格式:增加content-available字段并设成1;alert字段必须为空否则收到的就不是静默推送;sound字段不影响静默推送,看需求是否需要。

总结:相当于应用在后台的时候app中收到推送回调,在没有打开app的前提下去做一些操作,例如刷新UI等,Xcode中需要设置remote notifications

21.用c创建的对象arc下需要自己去释放吗?

用free()去释放

22.udp服务器如何发送消息,是否是面向连接

23.项目中遇到哪些难题,上架是否遇到过问题?

项目难题:

上架问题:启动图片含有苹果的logo直接被打回;

上架勾选了内购但是没有开发内购功能;符合内购的功能模块确使用了第三方支付;

24.混合开发时,客户端的登录状态如何同步到h5页面?

可以通过webjsbridge约定一个方法,在app登录成功的时候通知h5去登录

app中的登录信息其实就是一个token值,可以将token或者用户id传递给h5.

传递之前清理一下h5的地址对应的cookie(遍历cookie单例找到改url对应cookie并删除);

加载html的时候讲token通过cookie传递过去(在包装request的时候设置进去);

25.weak的原理是什么,知道多少说多少?

weak是Runtime维护了一个hash(哈希)表,用于存储指向某个对象的所有weak指针。weak表其实是一个hash(哈希)表,Key是所指对象的地址,Value是weak指针的地址(这个地址的值是所指对象指针的地址)数组。

26.wk与webview区别?

wkwebview有更多的h5特性,更高的滚动刷新率内置手势

27.autolayout布局的view,如何在自己.m文件中获取宽高以便子视图根据条件布局?

可以在layoutsubviews里面获取

28.xr的适配 设备唯一标示怎么获取 不用uidevice 苹果貌似禁止了?

注意安全区safeArea,设备尺寸宏定义。[NSUUID UUID].UUIDString动态id,每次生成的id都不一样,udid/Mac地址/openudid 都被苹果禁止了,苹果不允许访问用户唯一的隐私数据。

29.表情是怎么实现的,本地存储?还有表情是如何展示的(图文混排怎么做)?

本地需要两个字典,表情图片字典、表情含义字典。图文混排使用yykit

30.cache目录下文件如何缓存的 跟tmp目录下的文件有什么区别?

用户生成的文件、其他数据及其他程序不能重新创建的文件,应该保存在/Documents目录下面,并将通过iCloud自动备份,可以重新下载或者重新生成的数据保存在/Library /caches目录下面,不备份。

tmp下的文件系统会根据情况将其清空 可能是内存不足的时候也可能是其他时候

31.ios怎么去管理一个线程的生命周期?

可以监控线程查看runloop处于什么mode

32.如何解决内存暴涨问题?

创建对象的时候控制一次性创建的数量,创建完成回收该内存空间

33.fmdb如何解决多线程问题?

使用FMDatabaseQueue 思路是:创建一个队列,然后将放入队列的block顺序执行,这样避免了多线程同时访问数据库;每个线程使用同一个Queue实例

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

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,094评论 1 32
  • 一、深复制和浅复制的区别? 1、浅复制:只是复制了指向对象的指针,即两个指针指向同一块内存单元!而不复制指向对象的...
    iOS_Alex阅读 1,372评论 1 27
  • 基础部分 设计模式 1). MVC模式:Model View Control,把模型 视图 控制器 层进行解耦合编...
    微冷l阅读 482评论 1 0
  • 《乱剑齐伤》 江中咩水船休误, 芈山晨咪齐高嵩。 专书铭人让他换, 离别时来无心间。 春芳花自花城又, 是批五堵诗...
    春城怡景阅读 420评论 4 6
  • McDonald’s uses the iconic arch to convey where the close...
    卖加拿大海参阅读 193评论 2 3