什么是ARC技术?与GC是否相同?
字数1041阅读0评论0喜欢0
ARC 是Automatic Reference Counting的简称,我们称之为自动引用计数,是IOS5之后推出的内存管理的新特性,本质上还是使用引用计数来管理对象,只是在编写代码时,不需要
想对象发送release或者autorelease方法,也不需要调用DellOC方法,编译器会在合适的位置自动给用户生成release消息,GC
的全称是Garbage collection,内存垃圾回收机制,ARC比GC性能好。
iOS中是否支持垃圾回收机制
iOS开发只支持手动内存管理与ARC,Mac开发支持GC垃圾回收机制,10.8之后弃用了GC,推荐使用ARC
内存中的堆区和栈区的差别
栈区有编译器自动分配释放,存放方法的参数值,局部变量的值等,堆区一般有程序员分配与释放,若不释放,则内存溢出
strong与weak,_unsafe_unretained与weak的区别
1.strong
是强引用,weak是弱引用,在ARC中,使用strong告诉编译器帮助我们自动插入retain,weak是普通赋值相当于手动管理内存的
assign.
2._unsafe_unretained与weak功能一致,区别在于当之下你给的对象销毁后,weak会将变量置为nil,防止调用野指针
ARC存在内存泄漏吗
ARC中如果内存管理不当的话,同样会存在内存泄漏,列入:ARC中也会循环引用导致内存泄漏,OC对象与CoreFoundation类之间桥接时,管理不当也会产生内存泄漏
自动释放池是什么:如何而工作?
自动释放池是NSAutorelease累的一个实例,当想一个对象发送autorelease消息时,该对象会自动入池,等待池销毁时,将会向池中的所有对象发送一条release消息,释放对象
为什么delegate属性都是assign而不是retain
防止循环引用,以至于对象无法得到正确的释放
iOS开发中数据持久性,有哪几种?
plist文件写入,对象归档,sqlite数据库,coredata
什么是KVC和KVO?以及他们之间的关系是什么
1.KVC是一种简介访问对象实例变量的机制,该机制可以不通过存取方法就可以访问对象的实例变量
2.KVO是一种能使得对象获取到其他对象属性变化的通知机制。
3.实现KVO键值观察模式,,被观察的对象必须使用KVC键值编码来修改它的实例变量,这样擦能被观察者观察到,因此KVC是KVC的基础或者来说
KVO的实现是建立在KVC的基础之上的
简书常见的设计模式:单例,代理,观察者,工厂
内存管理在dealloc方法中,用release方法好还是用self.xxx=nil好,
使用self.xxx好,因为小调用了release方法,而且还将变量设置为nil,这样就更安全的释放对象,防止野指针调用
线程与进程的区别和联系
一般的应用程序是单个进程,也有多进程,进程是个静态的容器,里面容乃了很多歌线程,线程是一系列方法的线性执行路径
什么是TCP链接的三次握手
1.客户端发送syn包到服务器,并进入SYN_SEND状态,等待服务器确认
2.服务器收到syn包,必须确认客户的SYN,同事自己也发送一个SYN包,客户端收到服务器的SYN+ACK包,此时服务器进入SYN_RECV状态
3.客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手