1、 简述OC中内存管理机制。与retain配对使用的方法是dealloc还是release,为什么?需要与alloc配对使用的方法是dealloc还是release,为什么?readwrite,readonly,assign,retain,copy,nonatomic 、atomic、strong、weak属性的作用?
答:retain 对应release ,retain+1,release -1 alloc 对应dealloc alloc是开辟内存空间dealloc销毁空间
readwrite,生成set,get
readonly, 生成get
assign,set 内部直接赋值
retain,先做release ,在retain
copy,复制遵守特许协议的对象
nonatomic:非原子性(不会在多线程保证安全)
atomic、原子性(保证)
strong:ARC下使用,arc 强引用和非ARC下retain 相似
weak: ARC下使用,和非ARC下assign 相似,当系统释放后会指向nil
2、 类变量的@protected,@private,@public,@package,声明各有什么含义?
@protected:本类以及子内都可以访问,系统默认
@private:只有本类可以访问
@public,:公共的,都可以访问
@package(框架内访问)
(能不能用箭头访问)
3、 线程是什么?进程是什么?二者有什么区别和联系?
进程间是独立,这表现在内容空间,上下文,线程的运行环境
一般来说进程是无法突破程序边界,取其他进程的存储空间,而线程处于进程空间内,所以所产生的线程共享同一内存空间
同一进程代码不同同时进行,除非引入线程.线程属于进程,金城推出时所产生线程强制退出并清除,线程占用资源少于进程,在线程中,进程也是一个线程,尅也理解程序第一个线程
一个程序只有一个进程,当可以有多个线程
4、 谈谈你对多线程开发的理解?ios中有几种实现多线程的方法?
多线程就是可以让一个程序同时执行多个线程,来提高程序的执行效率
实现方法:
1.Thread
3.Cocoa operations;
2.GCD
4.poxs
5、 线程同步和异步的区别?IOS中如何实现多线程的同步?
(异步:并发,同步:串行,,可以使用主队列,queue线程最大数量设为1)区别:同步就是当程序的线程还没有结束时,不可以执行别的操作,可能会卡死程序界面,异步,程序在执行时,不需要等执行结束,可以执行别的操作,相当于开了一个线程.
7、 获取一台设备唯一标识的方法有哪些?
1.uuid
2.udid
3.open udid
4.广告标识
5.vindor
6.mac adderss
token boudle id
8、 ios类是否可以多继承?如果没有,那可以用其他方法实现吗?简述实现过程。
Ios 不可以多继承.可以用代理
9、 堆和栈的区别?
栈:在系统中,一般系统管理的对象都在栈中,我们不需要去管理,但不需要的时候,系统会自动释放堆中的对象,一般出了方法体这个对象就释放了.
堆:我们手动开辟的空间一般在堆中开辟,堆中开辟空间在ARC情况下,系统会延迟释放(autorelease),非ARC情况下需要我们手动管理.
10、 ios本地数据存储都有哪几种方式?
1,UserDefault
2.codeDate
4.nskeyArchive
3.write写入
5.plist
6.归档反归档