ACCESSiOS经典面试题

1.+load+initialize的界别是何许?

解析:读书一个措施,
首要从两下边出手.第一是,这些艺术什么时候调用,第二它的机能是什么.

  • load
    怎样时候调用:当程序一启动,就会把拥有类加载进内存,只要一个类加载进内存,就会调用这一个类的load方法.
    调用次数:只会调用三遍
    意义:起首化类的操作
  • initialize
    怎么时候调用:当首次采纳那个类仍旧它的子类就会调用
    调用次数:有可能会调用多次,比如说那个类有一个子类,第一遍采用这么些子类的时候,会调用2次.
    意义:伊始化类的操作

2.runtime兑现的建制是何许,有什么样用法,一般用来干嘛?

是什么?

  • runtime是运作时机制.它是一套相比较底层的纯C语言API,属于一个语言库,包含了诸多底层的C语言API.
  • 平生编制的OC代码,在程序运行中,其实最终都是转成了runtime的C语言代码,runtime算是OC的幕后工作者.

** 有哪些用法?**

  • ①发送音讯
  • ②换成方法(系统自带的艺术效果不够,给系统自带的不二法门扩张部分意义,并且保持原有的效用)
  • ③动态创造一个类(比如KVC底层实现)
  • ④动态增长方法(如果一个类形式丰盛多,加载类到内存的时候也正如耗费资源,需要给各类方法生成映射表,可以应用动态给某个类,添加方法解决)
  • ⑤字典转模型

3.哪些时候会暴发EXC_BAD_ACCESS异常?

指向僵尸对象(不可用内存)的指针 给野指针发音讯会报EXC_BAD_ACCESS错误

4.category和extension的区别

解析
先解说一下这三个词的趣味,再分别说下这三个类的作用选择情状 就OK了

  • category:分类
    1.职能:给一个类扩大部分措施,不能够扩充属性
    2.使用状况: 增加系统的类
  • extension:类目,类扩大,匿名分类
    1.职能:扩充属性和章程表明
    2.利用情况: 扩充自定义类

5.你是怎么精晓bounds的

解析
遇见这种糟糕回答的题材,首先说出它的字面意思

  • 1.情节:每个控件都有温馨的内容,一个控件子控件都是周旋于情节
  • 2.bounds得以安装控件尺寸
  • 3.bounds讲述一块区域,描述的是可视范围在内容的区域
  • 4.修改Bounds的x,y,不会潜移默化当下控件在父控件地点,本质修改的是内容原点

6.UICollectionView运用手续?

  • 1.起始化布局 流水布局
  • 2.安装数据源
  • 3.注册cell
  • 4.自定义cell

7.简述你对协议的明亮?

解析
怎么去行使那些知识点 (那是初大方一般这么回答,low);
为啥要拔取协议 (思想),何时才需要动用协议 (开发情况)

  • 1.有时候自己不想做的事情,搞一个代理去管理,这时候只要代理听从了某个协议,就能变成自我代理.
  • 2.UIScrollView,监听UIScrollView滚动,那时候需要坚守UIScrollView协议
    注意点:代办一定要记得实现方法.

8.UITabBarController控制器中view的内部结构

  • 它view内部的结构为一个特地存放子控制器View的View,和一个UITabBar条.
    注意:UITabBar的冲天为49.

UI基础考点

1.通过代码怎样自定义控件? 并且一句话来说述下每一个手续的说辞?

  • 1.新建一个继承UIView的类,(所谓自定义控件就是持续系统自带的控件写一个要好的控件)
  • 2.在initWithFrame主意中添加子控件(保证旁人在外围不管是经过init还是initWithFrame始建都可以添加子控件,因为init主意内部会调用initWithFrame
  • 3.在layoutSubViewsACCESS,方法中设置子控件的frame(因为在InitWithFrame方法中当前控件尺寸可能没值,所以测算不了子控件的地点和尺寸,而在layoutSubViews办法,可以得到眼前控件的尺码)
  • 4.提供一个模型属性,重写模型属性的set方法(保证在旁人在安装数据的那一刻就足以拿到数码设置到相应的子控件上)

2.透过XIB咋样自定义控件? 并且简单的叙述下每一个步骤的说辞?

  • 1.新建一个继承UIView的类,(所谓自定义控件就是持续系统自带的控件写一个谈得来的控件)
  • 2.新建一个xib文件(xib的公文名最好和类名一样)
  • 3.改动最外面那一个控件的class为控件类名(唯有修改类名,当时候从xib中出来的才是本人这系列型的控件)
  • 4.提供一个模子属性,重写模型属性的set方法(保证在别人在安装数据的那一刻就足以得到数码设置到相应的子控件上)

3.用一个性能引用UI控件的时候为什么用weak?

  • 因为UI控件添加到父控件中事后,会有强指针指向这么些对象.在搞一个属性引用那个目的,用弱引用就可以.

4.简述UITableView性能优化的原理?

  • 当滚动列表时,部分UITableViewCell会移出窗口,UITableView会将窗口外的UITableViewCell放入一个对象池中,等待录取。当UITableView要求dataSource再次回到UITableViewCell时,dataSource会先查看那一个对象池,要是池中有未选取的UITableViewCell,dataSource会用新的数额配置这一个UITableViewCell,然后回来给UITableView,重新显示到窗口中,从而避免创立新对象.

相关文章