美文网首页
ios_最新面试题

ios_最新面试题

作者: yangliangliang | 来源:发表于2019-03-05 17:55 被阅读5次

1. ios 深拷贝和浅拷贝的区别

可以简单整理为:不可变对象的copy,都是浅拷贝,地址相同,

可变对象的copy和mutablecopy,都是深拷贝,

copy方法返回的是不可变对象,mutableCopy返回的是可变对象,容器对象内的对象始终是浅拷贝。

2.Objective-C的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么?

答:Objective-C的类不可以多重继承;可以实现多个接口(协议);Category是类别;一般情况用分类好,用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系。

3.Objective-C 中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么?

答:线程创建有三种方法:使用NSThread创建、使用GCD的dispatch、使用子类化的NSOperation,然后将其加入NSOperationQueue;

在主线程执行代码,方法是performSelectorOnMainThread

如果想延时执行代码可以用performSelector:onThread:withObject:waitUntilDone:

4.Category(类别)、 Extension(扩展)和继承的区别

区别:

1. 分类有名字,类扩展没有分类名字,是一种特殊的分类。

2. 分类只能扩展方法(属性仅仅是声明,并没真正实现),类扩展可以扩展属性、成员变量和方法。

3. 继承可以增加,修改或者删除方法,并且可以增加属性。

5.什么是 KVO 和 KVC?

1). KVC(Key-Value-Coding):键值编码 是一种通过字符串间接访问对象的方式(即给属性赋值) 举例说明:

 stu.name =@"张三"// 点语法给属性赋值[stu setValue:@"张三"forKey:@"name"];

 通过字符串使用KVC方式给属性赋值stu1.nameLabel.text =@"张三"; [stu1 setValue:@"张三"forKey:@"nameLabel.text"];

 KVO(key-Value-Observing):键值观察机制 他提供了观察某一属性变化的方法,极大的简化了代码。 KVO只能被KVC触发,包括使用setValue:forKey:方法和点语法。// 通过下方方法为属性添加KVO观察

- (void)addObserver:(NSObject*)observer forKeyPath:(NSString*)keyPath options:(NSKeyValueObservingOptions)options context:(nullablevoid*)context;// 当被观察的属性发送变化时,会自动触发下方方法 

 - (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context{} KVC 和 KVO 的 keyPath 可以是属性、实例变量、成员变量。

5、ViewController生命周期                                                                                                                按照执行顺序排列:                                                                                                   1.initWithCoder:通过nib文件初始化时触发。                                                           2.awakeFromNib:nib文件被加载的时候,会发生一个awakeFromNib的消息到nib文件中的每个对象。                                                                                                                              3.loadView:开始加载视图控制器自带的view。                                                      4.viewDidLoad:视图控制器的view被加载完成。                                                   5.viewWillAppear:视图控制器的view将要显示在window上。                 6.updateViewConstraints:视图控制器的view开始更新AutoLayout约束。7.viewWillLayoutSubviews:视图控制器的view将要更新内容视图的位置。8.viewDidLayoutSubviews:视图控制器的view已经更新视图的位置。              9.viewDidAppear:视图控制器的view已经展示到window上。                    10.viewWillDisappear:视图控制器的view将要从window上消失。               11.viewDidDisappear:视图控制器的view已经从window上消失。

6.如何对iOS设备进行性能测试?                                                                                                   答: Profile-> Instruments ->Time Profiler

7.开发项目时你是怎么检查内存泄露?                                                                                                1). 静态分析 analyze。                                                                                                                         2). instruments工具里面有个leak可以动态分析。

相关文章

  • ios_最新面试题

    1.ios 深拷贝和浅拷贝的区别 可以简单整理为:不可变对象的copy,都是浅拷贝,地址相同, 可变对象的copy...

  • iOS最新面试题汇总(四)

    iOS最新面试题汇总:iOS最新面试题汇总(一)iOS最新面试题汇总(二)iOS最新面试题汇总(三)iOS最新面试...

  • iOS最新面试题汇总(三)

    iOS最新面试题汇总:iOS最新面试题汇总(一)iOS最新面试题汇总(二)iOS最新面试题汇总(三)iOS最新面试...

  • iOS最新面试题汇总(一)

    iOS最新面试题汇总:iOS最新面试题汇总(一)iOS最新面试题汇总(二)iOS最新面试题汇总(三)iOS最新面试...

  • iOS最新面试题汇总(二)

    iOS最新面试题汇总:iOS最新面试题汇总(一)iOS最新面试题汇总(二)iOS最新面试题汇总(三)iOS最新面试...

  • 2020最新Java面试题及答案汇总(上)

    目录:2020最新Java面试题及答案汇总(上)目录:2020最新Java面试题及答案汇总(下) 1、面试题模块汇...

  • 2020最新Java面试题及答案汇总(下)

    目录:2019最新Java面试题及答案汇总(上)目录:2019最新Java面试题及答案汇总(下) 上一篇文章已经罗...

  • iOS面试知识点整理

    参考:2017年最新 iOS面试题及答案2017秋季校园招聘iOS开发岗位面试题集锦iOS面试题300+2017...

  • 笔试11

    摘自:* markyun 2014年最新前端开发面试题 和 前端开发面试题 darcyclarke Front...

  • iOS_最新cocoapods安装方法

    最近在进行一个项目,换了台电脑,需要安装cocoapods,路上遇到很多的坑,废话不多,进入正题: 1,安装RVM...

网友评论

      本文标题:ios_最新面试题

      本文链接:https://www.haomeiwen.com/subject/bvuouqtx.html