课程咨询 :186-8884-0703

  • 达内深圳IOS培训面试大全

    发布:深圳iOS培训机构_达内集团深圳iOS培训中心_深圳iOS培训班       来源:达内新闻      时间:2015-12-29

  • 很多面临求职就业的学生都会在面试过程中遇到各种问题,尤其是技术问题经常在紧张的气氛下让初次面试的同学无所适从,因此,达内深圳ios培训(sz.ios.tedu.cn)专家就总结了最为普遍的ios面试技术问题,希望对同学们有所帮助。

    达内<a style='color:blue' href='http://sz.ios.tedu.cn/'>深圳IOS培训</a>面试大全

    1.UIWindow和UIView和CALayer的联系和区别?

    答:UIView是视图的基类,UIViewController是视图控制器的基类,UIResponder是表示一个可以在屏幕上响应触摸事件的对象;

    UIwindow是UIView的子类,UIWindow的主要作用:一是提供一个区域来显示UIView,二是将事件(event)的分发给UIView,一个应用基本上只有一个UIWindow.

    万物归根,UIView和CALayer都是的老祖都是NSObjet。可见UIResponder是用来响应事件的,也就是UIView可以响应用户事件。

    CALayer和UIView的区别:

    1.1 UIView的继承结构为: UIResponder : NSObject。

    CALayer的继承结构为: NSObject。可见UIResponder是用来响应事件的,也就是UIView可以响应用户事件,CALayer直接从NSObject继承,因为缺少了UIResponder类,不能响应任何用户事件。

    1.2所属框架,UIView是在/System/Library/Frameworks/UIKit.framework中定义的,UIKit主要是用来构建用户界面,并且是可以响应事件的。CALayer是在/System/Library/Frameworks/QuartzCore.framework定义的。而且CALayer作为一个低级的,可以承载绘制内容的底层对象出现在该框架中。

    1.3 UIView相比CALayer最大区别是UIView可以响应用户事件,而CALayer不可以。UIView侧重于对显示内容的管理,CALayer侧重于对内容的绘制。UIView是基于CALayer的高层封装。

    1.4相似支持1:相似的树形结构2:显示内容绘制方式3:布局约束

    总结一下就是:UIView是用来显示内容的,可以处理用户事件.CALayer是用来绘制内容的,对内容进行动画处理依赖与UIView来进行显示,不能处理用户事件

    为啥有两套体系并不是两套体系?UIView和CALayer是相互依赖的关系。UIView依赖与calayer提供的内容,CALayer依赖uivew提供的容器来显示绘制的内容。归根到底CALayer是这一切的基础,如果没有CALayer,UIView自身也不会存在,UIView是一个特殊的CALayer实现,添加了响应事件的能力。UIView本身,更像是一个CALayer的管理器,访问它的跟绘图和跟坐标有关的属性,例如frame,bounds等等,实际上内部都是在访问它所包含的CALayer的相关属性

    UIView的layer树形在系统内部,被系统维护着三份copy。

    第一份,逻辑树,就是代码里可以操纵的,例如更改layer的属性等等就在这一份。

    第二份,动画树,这是一个中间层,系统正在这一层上更改属性,进行各种渲染操作。

    第三份,显示树,这棵树的内容是当前正被显示在屏幕上的内容。

    这三棵树的逻辑结构都是一样的,区别只有各自的属性。

    UIView的主layer以外,对它的subLayer,也就是子layer的属性进行更改,系统将自动进行动画生成。

    CALayer的坐标系系统和UIView有点不一样,它多了一个叫anchorPoint的属性,它使用CGPoint结构,但是值域是0~1,也就是按照比例来设置。这个点是各种图形变换的坐标原点,同时会更改layer的position的位置,它的缺省值是{0.5, 0.5},也就是在layer的中央。

    2. property 都有哪些常见的字段

    strong,weak,retain,assign,copy nomatic,readonly

    3. strong,weak,retain,assign,copy nomatic等的区别。

    assign:简单赋值,不更改索引计数(Reference Counting)对基础数据类

    copy:建立一个索引计数为1的对象,然后释放旧对象。对NSString

    retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 ,对其他NSObject和其子类

    weak和strong的区别:weak和strong不同的是当一个对象不再有strong类型的指针指向它的时候它会被释放,即使还有weak型指针指向它。一旦最后一个strong型指针离去,这个对象将被释放,所有剩余的weak型指针都将被清除。

    copy与retain:

    copy其实是建立了一个相同的对象,而retain不是.

    copy是内容拷贝,retain是指针拷贝.

    copy是内容的拷贝,对于像NSString,的确是这样,如果拷贝的是NSArray这时只是copy了指向array中相对应元素的指针.这便是所谓的"浅复制".

    atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写未完成的时候被另外一个线程读取,造成数据错误。而这种机制是耗费系统资源的,所以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatomic是一个非常好的选择。

    4.__block和__weak修饰符的区别:

    __block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型。

    __weak只能在ARC模式下使用,也只能修饰对象(NSString),不能修饰基本数据类型(int)。

    __block对象可以在block中被重新赋值,__weak不可以。

    5.常见的Http状态码有哪些?

    http状态吗:302是请求重定向。500以上是服务器错误。400以上是请求链接错误或者找不到服务器。200以上是正确。100以上是请求接受成功。

    6.static 关键字的作用

    1.函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;

    2.在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;

    3.在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;

    4.在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;

    5.在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。

    更多内容请点击【深圳IOS培训】

上一篇:IOS职场新人切记不要太浮躁

下一篇:深圳达内IOS培训专家建议:iPhone换机需要注意的事项

最新开班日期  |  更多

3G-IOS软件工程师周末班

3G-IOS软件工程师周末班

开班日期:2月28日

3G-IOS软件工程师周末班

3G-IOS软件工程师周末班

开班日期:2月28日

3G-IOS软件工程师就业班

3G-IOS软件工程师就业班

开班日期:2月28日

3G-IOS软件工程师就业班

3G-IOS软件工程师就业班

开班日期:2月28日

  • 地址:深圳市龙岗区横岗力嘉路2013文化创客园A栋——深圳IOS培训中心龙岗校区
    深圳市宝安区共乐路西乡商会大厦10楼——深圳IOS培训中心宝安校区
  • 课程培训电话:186-8884-0703     全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56