iOS面试题(一)

/*

     1, What is block? Please write a simple example to block;

     : block 是一个代码块,比如一些其它Web编程语言的"匿名函数".objc中通常使用block实现代理方法实现的功能,也就是回调.使用代理需要设置代理数据接收者,而且代理方法是被分离开来处理的,block可以将这些分离的代码放到一个代码块中.

     typedef void(^myBlock)(int value);

     @property (nonatomic, copy) myBlock block;

     - (void)setMyblock:(void(^)(int value))block;

     - (void)setMyblock:(void (^)(int))block {

     if (block) {

     self.block = block;

     }

     }

     */

    /*

     2, Can we use two tableview controllers on one viewcontroller?

     : 从技术角度上分析, 一个控制器内部添加两个表格控制器是没有问题的, 通过addChildViewController:

     */

    /*

     3, What is lazy loading?

     : 延迟加载(懒加载): 当需要用到该对象的时候, 再去创建对象, 合理利用空间.

     比如:控制器的view, 在第一次用到时才调用loadView方法进行创建.

     */

    /* 

     4, What is NSOperation queue?

     : NSOperationQueue 操作队列, 用来管理多个操作任务, 为每一个任务安排对应的子线程. 可实现线程同步和线程并发.

     */

    /*

     5, Is there any garbage collection mechanism in Objective-C?

     : <1> OC 1.0 没有垃圾回收

     <2> OC 2.0 有垃圾回收, 只能用在Mac

     <3> iOS中有ARC机制, 是编译器特性, 垃圾回收是运行时特性.

     */

    /*

     6, Difference between method and selector?

     : method:包含整个方法的定义: 返回值类型,方法名,参数,参数类型,方法体.selector是通过方法名找到方法地址,从而判断该方法是否存在.

     */

    /*

     7, Difference between frame and bounds?

     : frame:view在父view坐标系统中的位置和大小. (参照点:父视图的坐标系). 

     bounds:view在本地坐标系中的位置和大小.(参照点:本地坐标系)

     */

    /*

     8, What is responder chain 

     : 凡是直接或者间接继承自UIResponser 的类创建的对象都是响应者.比如(UIview, UIviewController, UIApplication). 由响应者对象组成的链叫响应者链.

     当触摸视图时, 系统会有碰撞检测过程,查找该触摸发生到哪个视图上.

     UIApplication->window->视图口控制器->根视图->视图1->视图2 碰撞检测结束之后,接下来对触摸时间做出处理, 首先查看视图2是否对触摸事件做出处理, 如果视图2不处理, 则把事件漏给视图1, 直到有一个对象处理了, 如果都没处理,则事件丢弃

     */

    /*

     9, 堆和栈的区别?

     : a, 堆栈空间分配区别:

          :由操作系统自动分配释放, 存放函数的参数值, 局部变量的值等.其操作方式类似与数据结构中的栈,先进后出.

          :一般有开发人员分配,若开发人员不释放, 程序结束时由系统回收, 分配方式类似于链表, 堆区用来开辟的空间和回收空间的操作分别是mallocfree.

         b, 内存分配和读取效率区别:

           :由系统自动分配, 速度快, 但是程序员无法控制.

           :堆是由程序员自己分配, 速度较慢,容易产生碎片, 不过用起来方便,非常灵活.

         c, 申请大小不同:

           : 栈是向低地址扩展的数据结构, 是一块连续的内存区域, 栈顶的地址和栈的最大容量是系统预先规定好的, 能从栈获得的空间较小

          

     */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值