• iOS面试题积累


    1. 属性readwrite,readonly,assign,retain,weak,strong,copy,nonatomic ,atomic的作用,使用情况及注意点

    (1).readwrite  特性:可读可写; 情况:生成getter、setter方法;【注】:若没有成员变量会直接创建;

    (2).readonly  特性:只读,不会生成setter方法;情况:不让属性在类外变化;【注】:只会生成getter方法;

    (3).assign  特性:赋值,setter方法将传入的参数赋值给实例变量;情况:仅仅设置变量;【注】:在MRC模式下assign修饰的(指针)对象释放后,改指针仍指向原来的地方。而在ARC模式下功能与之类似的weak指向的对象释放后,改指针会自动置为nil;

    (4).retain  特性:持有,setter方法 将传入参数先保留,再赋值;情况:传入参数的retaincount会+1; 【注】:原则上在ARC模式下是assign与retain不能使用的,但是编译器放宽了要求(写了也没关系),ARC模式中与retain功能几乎相同的属性修饰是strong(强引用);

    (5).copy  特性:赋值,setter方法将传入对象复制一份,情况:一般只用于修饰NSString;

    (6).nonatomic  特性:非原子操作,决定编译器生成的setter,getter是否是原子操作 ;情况:提高效率;

    (7).atomic  特性:原子操作,提供多线程安全,防止线程在未完成时被其它线程读取(会造成数据错误);情况:不能被打断的操作 【注】:一般使用nonatomic;

    2.NSInteger 不是NSNumber/NSObject的子类,是基本数据类型(是int/long的别名),它会根据系统是32位还是64位来决定本身是int还是long。

    3.通知与协议的区别

    协议可以按生活中的理解看成一对多,但是它有控制链的关系,通知是没有的。boss的工作代理是不通的员工,各个员工为boss工作,boss要给各个员工发工资;是不能把Cat的工资发给Dog,(就不是一类嘛)

    通知可以一对多,一条消息发给多个接收者,比如财务通知:公司员工请于XX号XX点到XX领取薪资条。通知只关心发出通知。

  • 相关阅读:
    sql random string
    ubuntu 16.04中文输入法安装
    ubuntu修改docker源
    osm3ge
    ubuntu配置环境变量 sudo gedit /etc/profile
    斐波那契数列中获取第n个数据值
    为什么redis使用单线程还能这么快?
    Redis使用规范
    redis性能提升之pipeline
    centos7 用yum安装java8
  • 原文地址:https://www.cnblogs.com/LiRenee/p/4941103.html
Copyright © 2020-2023  润新知