UI面试常见问题及回答

   在ios面试中,应试者经常遇到一些ios基础方面的知识,下面总结了一些经常遇到但很重要的知识.


   第一个:内存管理(oc有垃圾回收机制, ios没有)

   在UI中我们用内存引用计数来对内存进行管理;(遵循谁开辟,谁释放原则,内存引用计数要保持平衡alloc, retain, copy等关键字会使内存引用计数立即+1;当对象使用结束后要对它进行释放 ,release(立即减1) ,autorelease(未来减1);autorelease的对象会把这个对象放置到离它最近的自动释放池里,自动释放池释放的时候才会把自动释放池中的所有对象的内存引用计数-1;当对象被添加到容器里时(如数组, 字典),内存引用计数+1; 从容器里移除时,内存引用计数-1.

   第二个:类的扩展  (类的扩展主要有继承 类目 延展 协议)

   1.类目 Category

       命名 : @interface 要扩展的类名 (类目名) ~~ @end

       特点 :  1.不可定义成员变量,而且一般不定义属性

       2.可以添加方法,可重写原始类的方法,原始类的对象调用

   2.延展 Extension

        命名 : 写在.m文件里 @interface 类名 () ~~ @end

        特点 : 1.添加类的私有属性和方法;

   3.协议 Protocol(主要用于类与类之间通信常与deleate一起使用,一般使用属性定义)

        命名 : @protocol 协议名 <NSObject> ~~ @end  方法可分为两种:@required 不写是默认的,必须实现 @optional 可实现可不实现

        特点 :只声明,不实现 ;为了解决多继承问题 ;@property (nonatomic, assign) id<协议名> delegate, 此时用assign是为了防止循环拥有不能释放;

   4. 继承为子类对父类的继承

   特性 :1.继承为单向的,不能相互继承.

        2.继承具有传递性

        3.子类能够继承父类的全部特征和行为;

       第三个: 单例

      一个类只有一个实例,自行实例化并向整个系统提供这个实例,一个单例类可以实现在不同的窗口之间传递数据。

       特点

   1. 内存为1且只初始化一次 , 在静态区开辟内存;

   2. 永远不释放

   3. 任何地方都可以使用

   4. 多个界面的公共传值


   第四个:TableView代理的执行顺序

   1.UItableViewDataSource numberOfSectionsInTableView 确定有几个分区

   2.UItableViewDataSource numberOfRowsInSection 每个分区有几行

   3.UItableViewDataSource cellForRowAtIndexPath 确定每行的cell

   4.UITableViewDelegate didSelectRowAtIndexPath 转中改行,进入下一界面


   第五个:视图控制器的执行顺序

   1.alloc 创建对象,分配内存;

   2.init 初始化;

   3.loadView 创建视图(如果没有使用xib,storyboard可以重写);

   4.viewDidLoad loadView配套使用

   5.viewWillAppear 视图创建完成,将要显示//将要显示加判断

   6.viewDidAppear 视图已经显示

   7.viewWillDisappear  用于切换界面

   8.viewDidDisappear   用于切换界面

   9.dealloc  视图被销毁,释放创建的对象




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值