iOS面试题

来源:互联网 发布:防火知多少反思 编辑:程序博客网 时间:2024/05/22 06:46

原文地址:http://blog.csdn.net/mysevenmi/article/details/45289293
  1. NSArray 和 NSMutableArray 的区别(线程方向)? 
    NSArray是线程安全的, NSMutableArray是线程不安全的, 多线程中使用 需要 手动加锁 NSLock 或使用 @synchronized 修饰.
  2. Autorelease pool 实现原理?
    在ARC中使用 @@autoreleasepool修饰需要手动添加到释放池的代码.大概意思是autorelease pool 内部为一个双向链表, 每个链表元素为一个页,每个页是一个栈,详细的实现机制在这里,虽然不是很懂,感觉博主写的很好
  3. iOS沙盒机制
    默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp。因为应用的沙盒机制,应用只能在几个目录下读写文件 
    Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录 
    Library:存储程序的默认设置或其它状态信息;
    Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除
    tmp:提供一个即时创建临时文件的地方。
    iTunes在与iPhone同步时,备份所有的Documents和Library文件。
    iPhone在重启时,会丢弃所有的tmp文件。
  4. 深拷贝和浅拷贝的区别? 官方指南
    首先, 被拷贝对象必须实现了NSCopying协议
    浅拷贝: 被拷贝在内存中只有一份, 只是增加了一个指针指向这个对象, 浅拷贝导致该对象引用计数加1.
    深拷贝为被拷贝对象在内存中复制一份被拷贝着所持有,原来的对象引用计数不变,拷贝出来的对象引用计数加1.
    拷贝方法为 NSCopying协议方法: + (id)copyWithZone:(struct _NSZone *)zone 和+ (id)mutableCopyWithZone:(struct _NSZone *)zone 具体返回的是深拷贝还是浅拷贝, 需要看代理方法是如何实现的, 不过copy方法返回的始终为不可变对象, mutableCopy方法返回的是可变对象. 另外 归档和反归档是真正的深拷贝.

  1. NSArray 和 NSMutableArray 的区别(线程方向)? 
    NSArray是线程安全的, NSMutableArray是线程不安全的, 多线程中使用 需要 手动加锁 NSLock 或使用 @synchronized 修饰.
  2. Autorelease pool 实现原理?
    在ARC中使用 @@autoreleasepool修饰需要手动添加到释放池的代码.大概意思是autorelease pool 内部为一个双向链表, 每个链表元素为一个页,每个页是一个栈,详细的实现机制在这里,虽然不是很懂,感觉博主写的很好
  3. iOS沙盒机制
    默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp。因为应用的沙盒机制,应用只能在几个目录下读写文件 
    Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录 
    Library:存储程序的默认设置或其它状态信息;
    Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除
    tmp:提供一个即时创建临时文件的地方。
    iTunes在与iPhone同步时,备份所有的Documents和Library文件。
    iPhone在重启时,会丢弃所有的tmp文件。
  4. 深拷贝和浅拷贝的区别? 官方指南
    首先, 被拷贝对象必须实现了NSCopying协议
    浅拷贝: 被拷贝在内存中只有一份, 只是增加了一个指针指向这个对象, 浅拷贝导致该对象引用计数加1.
    深拷贝为被拷贝对象在内存中复制一份被拷贝着所持有,原来的对象引用计数不变,拷贝出来的对象引用计数加1.
    拷贝方法为 NSCopying协议方法: + (id)copyWithZone:(struct _NSZone *)zone 和+ (id)mutableCopyWithZone:(struct _NSZone *)zone 具体返回的是深拷贝还是浅拷贝, 需要看代理方法是如何实现的, 不过copy方法返回的始终为不可变对象, mutableCopy方法返回的是可变对象. 另外 归档和反归档是真正的深拷贝.


0 0
原创粉丝点击