1.OC語(yǔ)言的基本特點(diǎn)
OC語(yǔ)言的C語(yǔ)言的一個(gè)超集存炮,只是在C的基礎(chǔ)上加了面向?qū)ο蟮奶匦裕?0镶柱,object-oriented)桥温。
OC與Java語(yǔ)言相通都是單繼承楞捂,而C++是多繼承
OC不支持命名空間機(jī)制,取而代之的是在類名之前添加前綴加以區(qū)分兄渺。
2.#import 跟#include缝龄、@class有什么區(qū)別?#import<> 跟 #import”"又什么區(qū)別挂谍?
-#import 跟#include區(qū)別:兩者效果相同叔壤,只是后者不會(huì)引起交叉編譯,確保頭文件只被導(dǎo)入一次
-#import與@class的區(qū)別:import會(huì)包含這個(gè)類的所有信息口叙,包括實(shí)體變量和方法炼绘,而@class只會(huì)告訴編譯器,聲明的是類的名稱妄田,使用#impor編譯效率高俺亮,防止相互包含的編譯錯(cuò)誤。
3簡(jiǎn)述類目(分類)優(yōu)點(diǎn)和缺點(diǎn)疟呐,如果覆蓋本類或者父類的方法脚曾,會(huì)出現(xiàn)什么問題?
-優(yōu)點(diǎn):不需要通過增加子類而增加現(xiàn)有類的方法启具,且分類中的方法與原始類的方法沒有什么區(qū)別
-缺點(diǎn):無(wú)法向分類中添加實(shí)例變量本讥。覆蓋原始類方法后,原始類的方法無(wú)法調(diào)用
4簡(jiǎn)述內(nèi)存管理基本原理
如果使用alloc鲁冯,copy或者retain一個(gè)對(duì)象時(shí)拷沸,就必須向它發(fā)送一個(gè)release或者autorelease消息。其他方法創(chuàng)建的對(duì)象薯演,不用程序員來管理內(nèi)存撞芍。
5什么是ARC技術(shù),和GC是否相同涣仿?
ARC是Automatic Reference Counting的簡(jiǎn)稱勤庐,也稱自動(dòng)引用計(jì)數(shù),是iOS5.0之后推出的內(nèi)存管理的新特性好港。本質(zhì)還是使用引用計(jì)數(shù)來管理對(duì)象愉镰,只是我們?cè)诰帉懘a時(shí),不需要向?qū)ο蟀l(fā)送release或者autorelease方法钧汹,也不用調(diào)用delloc方法丈探,編譯器會(huì)在何時(shí)的位置自動(dòng)給用戶生成release消息,GC的全稱是garbage collection 拔莱,內(nèi)存垃圾回收機(jī)制碗降,ARC比GC性能好很多
6iOS中是否支持垃圾回收機(jī)制?
iOS開發(fā)只支持ARC和MRC(手動(dòng)內(nèi)存管理)塘秦,mac開發(fā)支持GC垃圾回收機(jī)制讼渊,10.8之后就棄用了GC,推薦使用ARC尊剔。
7深淺copy的基本概念和區(qū)別
淺copy:只復(fù)制對(duì)象本身爪幻,不對(duì)里面的屬性復(fù)制
深cop:不僅復(fù)制對(duì)象本身,對(duì)象持有的屬性對(duì)象也做復(fù)制
8內(nèi)存中的堆區(qū)和棧區(qū)的區(qū)別
堆區(qū)heap一般由程序員分配和釋放须误,若不釋放則內(nèi)存溢出
棧區(qū)stack由編譯器自動(dòng)分配釋放挨稿,存放方法的參數(shù)值,局部變量的值等
9用戶自定義了一個(gè)對(duì)象京痢,如何實(shí)現(xiàn)拷貝(可變和不可變拷貝)
10定義屬性時(shí)奶甘,什么時(shí)候用assign,retain祭椰,copy臭家,nonatomic
-assign:普通賦值,一般用于基本數(shù)據(jù)類型吭产,常見委托設(shè)計(jì)模式侣监,以此防止循環(huán)引用,
-retain:保留計(jì)數(shù)臣淤,獲得到了對(duì)象的所有權(quán)橄霉。引用計(jì)數(shù)的原有基礎(chǔ)上加1.
-用來復(fù)制對(duì)象,一般字符串使用copy邑蒋,F(xiàn)oundation中的不可變對(duì)象使用copy效果相當(dāng)于retain姓蜂,只是引用計(jì)數(shù)加1;
-nonatomic医吊,非原子性訪問钱慢,不加同步,多線程并發(fā)會(huì)提高性能
11strong與weak卿堂,_unsafe _unretained與weak的區(qū)別
-strong 叫強(qiáng)引用束莫,weak叫作弱引用懒棉,在ARC中,使用strong告訴編譯器幫助我們自動(dòng)插入retain览绿,weak是普通賦值相當(dāng)于手動(dòng)管理內(nèi)存的assign策严。
-_unsafe,_unretained與weak功能一致,區(qū)別在于當(dāng)指向的對(duì)象銷毀后饿敲,weak會(huì)將變量置為nil妻导,防止調(diào)用野指針。
12ARC存在內(nèi)存泄漏嗎
ARC中如果存在管理不當(dāng)?shù)脑捇掣鳎瑯訒?huì)存在內(nèi)存泄漏倔韭,例如:ARC中也會(huì)引用導(dǎo)致內(nèi)存泄漏,OC對(duì)象與CoreFoundation類之間橋接時(shí)瓢对,管理不當(dāng)也會(huì)產(chǎn)生內(nèi)存泄漏
13當(dāng)釋放對(duì)象時(shí)寿酌,為什么需要調(diào)用【super dealloc】方法?
因?yàn)樗队迹宇愂抢^承自父類份名,那么子類中有一些實(shí)例變量(對(duì)象),是繼承子父類的妓美,因此我們需要調(diào)用父類方法僵腺,將父類所擁有的實(shí)例進(jìn)行釋放。
14自動(dòng)釋放池是什么壶栋,如何工作辰如?
自動(dòng)釋放池是NSAutorelease類的一個(gè)實(shí)例,當(dāng)向一個(gè)對(duì)象發(fā)送autorelease消息時(shí)贵试,該對(duì)象會(huì)自動(dòng)入池琉兜,待池銷毀時(shí),將會(huì)想池中所有對(duì)象發(fā)送一個(gè)release消息毙玻,釋放對(duì)象豌蟋。