美文网首页
iOS面试相关

iOS面试相关

作者: wordlesser | 来源:发表于2018-05-25 10:56 被阅读44次

1.weak和assign的区别

weak
  • 只能修饰对象
  • 当引用计数为0时,会将指针置空不会出现野指针
assign
  • 能修饰对象和基本数据类型

  • 如果修饰的是对象,当引用计数为0时,不会将指针置空,是不安全的

      为什么weak会被置空?
      系统会维护一个weak表(哈希表[对象地址: weak指针地址]),用来存储指向某个对象的所有weak指针;当对象被释放时通过对象指针查询weak表找到weak指针地址并置为nil,然后再从weak表中移除此对象地址的key完成置空
    

2.copy和strong应用场景

copy
  • 深拷贝,当对其赋值的时候会复制一份新的内容,与复制的对象不会公用一块内存地址
  • 适用于可能在可变不可变对象之间操作的场景(NSMutableString等含有Mutable的对象)
strong
  • 浅拷贝,当对其赋值的时候只会复制内存地址,与复制的对象公用一块内存地址
  • 适用于不可变对象之间操作
后续补充
#3.响应链
#4.UIView和CALayer区别
#5.链表
#6.二叉树
#7.排序
#8.CoreData
#9.网络
#10.内存管理
#11.队列
#12.内存分配
#13.init和alloc
#14.kvc和kvo

相关文章

网友评论

      本文标题:iOS面试相关

      本文链接:https://www.haomeiwen.com/subject/vvqsixtx.html