iOS 面试题(八)

  1. 重写一个NSStrng类型的,retain方式声明name属性的setter和getter方法
      -(void)setName:(NSString *)name{
         if(_name != name){
            [_name retain];
            [_name release];
            _name = name;
         }
      }    
      -(NSString *)name{
        return[[_name retain] autorelease];
      }

 2  简述NotificationCenter、KVC、KVO、Delegate?并说明它们之间的区别?
     Notification (通知中心 ) 发布通知 注册观察者 移除观察者 通常是一对多的
     KVC(键值编码)不使用属性,就可以对变量进行赋值
     KVO (键值观察者)监听属性的变化,一旦发现属性值变化,触发事件
     Delegate (代理)代理模式,由代理帮委托者完成一些事情

3   What is lazy loading?
    延迟加载(又称懒汉模式)只在用到的时候才去初始化
最简单的一个例子就是tableView中图片的加载显示 :延迟加载,避免内存过高 

4  什么是Protocol?什么是代理?写一个委托的interface?委托的property声明用什么属性?为什么?
     Protocol—协议 协议是用来定义对象的属性,行为和用于回调的  @private 表示使用这个协议必须要写的方法 @optional 表示可选的方     法  
     Delegate是一种简单但是功能强大的设计模式。它的功能是程序中一个对象代表另一个对象,或者一个对象与另一个对象协同工作,委托对象保留另外一个对象的引用,即就是委托。
    委托的@property声明用assign  防止循环引用

5  分别描述类别(categories)和延展(extensions)是什么?以及两者的区别?继承和类别在实现中有何区别?为什么Category只能为对象添加方法,却不能添加成员变量?

    类目是对现有的一个类的拓展,生成私有方法,子类不能直接调用;但是通过继承,子类可以调用父类所有的属性和方法
    延展是声明属性 不用实现方法

    继承是子类对于父类已经拥有的方法和属性的继承 ,创建了一个新的类
    类目还是原有的类,只是对原来的类进行了一定的功能扩充

    类目中不能添加成员变量:因为类方法里面使用的都是静态变量,不能使用实例变量
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值