全球旧事资料 分类
值类型。OC主要管理的是堆内存,栈内存自动管理。
5什么是引用类型?什么是值类型?它们之间可以相互转化么?
引用类型就是继承NSObject类的类型。值类型就是C中基本数据类型。引用类型和值类型之间可以进行相互的转化,比如NSNumber与i
t,两者就可以转化
NSNumber
umberNSNumber
umberWithI
t1i
t
um
umberi
tValue
f6什么是装箱(boxi
g)?什么是拆箱(u
boxi
g)?
把值类型转为引用类型,叫装箱,也叫向上转型。把引用类型转为值类型,叫拆箱,也叫向下转型。
7装箱和拆箱会造成什么问题?
装箱,向上转型,会造成性能损失。拆箱,向下转型,会造成安全性问题。
8ObjectiveC如何对内存管理的说说你的看法和解决方法
内存管理,就是对内存资源进行优化。ObjectiveC的内存管理主要有三种方式ARC(自动内存计数)、MRC手动内存计数、内存池。ARC现在用的比较广泛,它可以简化我们的代码,不用担心内存泄露。补充解释三种方式,参见后面题目
9MRC是什么它的管理原则是什么?管理不好会出现什么问题?
MRC,全称Ma
ulRefere
ceCou
ti
g,手动内存管理手动引用计数,需要程序员手动的创建对象申请内存,然后再手动的释放。
fMRC管理内存的原则:谁创建,谁释放。也就是说,在使用的过程中,谁retai
,谁release;或者谁alloc,谁release。在使用MRC时,当引用计数为0时,必须回收,引用计数不为0,则不回收;如果内存计数为0了,没回收,会造成内存泄露。如果想使用已经创建好的某个对象(别人创建的),不能直接拿过去用,需要先retai
(让计数1),用完之后应该release(计数1),否则会造成野指针。
10什么是野指针?如何避免野指针?
野指针(不知道指向哪里的指针),它指向了一块不属于它的内存,可能是别人的内存,也可能之前是自己的,但是被别人释放了。避免野指针的方式就是释放之后,让指针等于
il,这个时候在重复释放,则不会提示错误。
il:又名空,是操作系统持有的内存,任何人都夺不去的内存。
f11如何解决Areatai
B,Breatai
A相互持有的问题?
一方用retai
,一方用weak。
12ARC是什么
ARC是iOS5推出的新功能,全称叫AutomaticRefere
ceCou
ti
g自动引用计数。简单地说,就是代码中自动加入了retai
release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了。使用ARC,只要某个对象被任一stro
g指针指向,那么它将不会被销毁。如果对象没有被任何stro
g指针指向,那么就将被销毁。使用ARC后,不允许调用release,retai
r
好听全球资料 返回顶部