什么是ARC技术?与GC是否相同?

ARC 是Automatic Reference Counting的简称,我们称之为自动引用计数,是IOS5之后推出的内存管理的新特性,本质上还是使用引用计数来管理对象,只是在编写代码时,不需要向对象发送release或者autorelease方法,也不需要调用dealloc方法,编译器会在合适的位置自动给用户生成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是KVO的基础或者来说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状态,完成三次握手

你可能感兴趣的:(什么是ARC技术?与GC是否相同?)