OC面試題

1.Objective-C可以實(shí)現(xiàn)多繼承嗎?可以實(shí)現(xiàn)多個(gè)接口嗎粘舟?Category是什么熔脂?重寫(xiě)一個(gè)類(lèi)的方式是用繼承好還是用分類(lèi)好?為什么蓖乘?

2.OC使用協(xié)議實(shí)現(xiàn)多繼承锤悄,可以遵守多個(gè)協(xié)議實(shí)現(xiàn)多接口。category是OC中的類(lèi)別嘉抒,類(lèi)別是用于給一個(gè)現(xiàn)有類(lèi)添加新方法零聚。重寫(xiě)類(lèi)一般采用繼承的方式,分類(lèi)(類(lèi)別)在給以個(gè)類(lèi)添加同名方法后些侍,會(huì)造成原有類(lèi)中方法的實(shí)效隶症,而繼承重寫(xiě)的方法,依然可以在使用父類(lèi)對(duì)象調(diào)用該方法岗宣。

3.定義屬性的時(shí)候蚂会,什么時(shí)候使用retain/copy/assign?寫(xiě)一個(gè)setter方法耗式,用于完成@property(nonatomic,retain) NSString* name;寫(xiě)一個(gè)setter方法胁住,用于完成@property(nonatomic,copy)NSString* name;

retain用于保留對(duì)象的引用計(jì)數(shù),在使用retain聲明的屬性做賦值的時(shí)候刊咳,成員變量指針會(huì)保留被賦值對(duì)象的引用計(jì)數(shù)彪见。

copy聲明的屬性,在使用屬性賦值的時(shí)候會(huì)娱挨,成員指針會(huì)指向新副本余指,這個(gè)副本是一個(gè)不可變副本,不論賦值對(duì)象是不是可變的跷坝。

assign用于基本數(shù)據(jù)類(lèi)型的屬性聲明酵镜,不涉及到內(nèi)存管理的問(wèn)題,也是缺省參數(shù)

retain聲明的屬性的setter方法展開(kāi)

- (void)setName:(NSString*)name

{

if(_name != name)

{

[_namerelease];

_name= [name retain];

}

}

copy聲明的屬性的setter方法展開(kāi)

- (void)setName:(NSString*)name

{

if(_name != name)

{

[_namerelease];

_name= [name copy];

}

}

4.什么時(shí)候使用NSMutableArray/什么時(shí)候使用NSArray

NSMutableArray一般在需要隨時(shí)更改數(shù)組結(jié)構(gòu)的時(shí)候使用

NSArray一般用于保存一些不需要修改邏輯的數(shù)據(jù)

5.實(shí)現(xiàn)字符串“I LOVE CHINA”反串成“CHINA LOVE I”

6. pch文件的作用

.pch表示"precompiled header",這是一個(gè)你工程要用到的來(lái)自于外部框架的頭文件列表柴钻。xcode將編譯這些頭到文件淮韭,這將減少你在選擇Build或Build and Go時(shí)編譯項(xiàng)目的時(shí)間。通常用到的頭文件已經(jīng)自動(dòng)包含了pch贴届,系統(tǒng)編譯每個(gè)cpp文件前靠粪,都會(huì)先include這個(gè)文件足丢。這樣就節(jié)省了添加include的時(shí)間,相當(dāng)于加速編譯

還有就是可以再這里面放入宏庇配,在整個(gè)工程中都可以用

7.怎樣解決重復(fù)編譯

#ifndef _DEBUG

#ifdef USE_MYLIB

................

#endif

8. awakeFromNib與viewDidLoad區(qū)別

awakeFromNib

當(dāng).nib文件被加載的時(shí)候,會(huì)發(fā)送一個(gè)awakeFromNib的消息到.nib文件中的每個(gè)對(duì)象绍些,每個(gè)對(duì)象都可以定義自己的awakeFromNib函數(shù)來(lái)響應(yīng)這個(gè)消息捞慌,執(zhí)行一些必要的操作。也就是說(shuō)通過(guò)nib文件創(chuàng)建view對(duì)象是執(zhí)行awakeFromNib柬批。

viewDidLoad

當(dāng)view對(duì)象被加載到內(nèi)存是就會(huì)執(zhí)行viewDidLoad啸澡,所以不管通過(guò)nib文件還是代碼的方式創(chuàng)建對(duì)象都會(huì)執(zhí)行viewDidLoad。

9. LayoutSubviews何時(shí)會(huì)被調(diào)用

當(dāng)要調(diào)整subViews時(shí)候氮帐,需要重寫(xiě)layoutSubviews方法嗅虏。

1:初始化init方法時(shí)候不會(huì)觸發(fā)。

2:滾動(dòng)UIScrollView時(shí)會(huì)觸發(fā)

3:旋轉(zhuǎn)UIScreen時(shí)會(huì)觸發(fā)

4:當(dāng)改變view的值時(shí)候會(huì)觸發(fā)上沐,前提是frame前后值發(fā)生了變化

5:當(dāng)改變UIview的大小時(shí)候會(huì)觸發(fā)

10. public/private/protected的具體區(qū)別

public公共皮服,加上這個(gè)修飾的類(lèi)或?qū)傩裕梢栽谕粋€(gè)包或者別的包里面訪問(wèn)

private私有的参咙,加上這個(gè)修飾的類(lèi)或?qū)傩粤涔悖荒茉谕?lèi)里訪問(wèn),同包和別的包不能訪問(wèn)

protected保護(hù)蕴侧,加上這個(gè)修飾的類(lèi)或?qū)傩栽裢荒茉陬?lèi)和同包訪問(wèn),別的包不能訪問(wèn)

11. ARC是什么

ARC是iOS 5推出的新功能净宵,全稱(chēng)叫ARC(Automatic Reference Counting)敲才。簡(jiǎn)單地說(shuō),就是代碼中自動(dòng)加入了retain/release择葡,原先需要手動(dòng)添加的用來(lái)處理內(nèi)存管理的引用計(jì)數(shù)的代碼可以自動(dòng)地由編譯器完成了紧武。

該機(jī)能在iOS 5/ Mac OS X 10.7開(kāi)始導(dǎo)入,利用Xcode4.2可以使用該機(jī)能刁岸。簡(jiǎn)單地理解ARC脏里,就是通過(guò)指定的語(yǔ)法,讓編譯器(LLVM

3.0)在編譯代碼時(shí)虹曙,自動(dòng)生成實(shí)例的引用計(jì)數(shù)管理部分代碼迫横。有一點(diǎn),ARC并不是GC酝碳,它只是一種代碼靜態(tài)分析(Static

Analyzer)工具矾踱。

12.寫(xiě)一個(gè)“標(biāo)準(zhǔn)”宏,這個(gè)宏輸入兩個(gè)參數(shù)并返回較小的

#define MIN(X,Y)((X)>(Y)?(Y):(X))

13.Objective-c中有多重繼承么疏哗?不是的話有聲明替代方式?

沒(méi)有多繼承呛讲,可以通過(guò)協(xié)議模擬多繼承

14.Objective-c中有私有方法嗎?私有變量呢?

沒(méi)有私有方法贝搁,但可以將方法直接實(shí)現(xiàn)在.m文件中不在.h文件中聲明時(shí)吗氏,外部也不能訪問(wèn)。

有私有變量

15.iPhone OS中有沒(méi)有垃圾回收雷逆?

沒(méi)有

16.常見(jiàn)的object-c的數(shù)據(jù)類(lèi)型有哪些弦讽,和c的基本類(lèi)型有什么區(qū)別

答:常見(jiàn)的object-c的數(shù)據(jù)類(lèi)型有NSInteger、CGFloat膀哲、NSString往产、NSNumber、NSArray某宪、NSData仿村,NSInteger會(huì)根據(jù)系統(tǒng)是32位還是64位來(lái)決定是本身是int還是Long,

CGFloat會(huì)根據(jù)系統(tǒng)是32位還是64位來(lái)決定是本身是float還是double,NSString、NSNumber兴喂、NSArray蔼囊、NSData都是指針類(lèi)型的對(duì)象,在堆中分配空間,而c語(yǔ)言中的char瞻想,[]等都是在棧中分配空間

17.id聲明的對(duì)象有什么特性压真?

id聲明的對(duì)象具有運(yùn)行時(shí)的特性,即可以指向任意類(lèi)型的objcetive-c的對(duì)象蘑险;

18.想nil對(duì)象發(fā)送消息會(huì)發(fā)生什么滴肿?

答:在Objective-C中向nil發(fā)送消息是完全有效的,只是在運(yùn)行時(shí)不會(huì)有任何作用佃迄。

19.什么是block泼差?block實(shí)現(xiàn)原理?

答:block是一個(gè)特殊的OC對(duì)象,它建立在棧上,而不是堆上,這么做一個(gè)是為性能考慮,還有就是方便訪問(wèn)局部變量呵俏。默認(rèn)情況下block使用到的局部變量都會(huì)被復(fù)制,而不是保留堆缘。所以它無(wú)法改變局部變量的值。如果在變量面前加上__block,那么編譯器回去不會(huì)復(fù)制變量,而是去找變量的地址,通過(guò)地址來(lái)訪問(wèn)變量,實(shí)際上就是直接操作變量普碎。另外block是在棧上分配的,所以一旦離開(kāi)作用域,就會(huì)釋放,因此如果你要把快用在別的地方,必須要復(fù)制一份吼肥。block是不能保留的,

retain對(duì)塊沒(méi)有意義。

20.C++和OC麻车,JAVA和OC之間的區(qū)別缀皱?

C++是功能強(qiáng)大,豐富的面向?qū)ο缶幊陶Z(yǔ)言动猬,具有私有啤斗、公有、保護(hù)權(quán)限的三種成員變量和成員方法赁咙,具有私有钮莲、公有免钻、保護(hù)三種繼承方式,具有重寫(xiě)崔拥,重載极舔,虛函數(shù),虛基類(lèi)等多態(tài)方式链瓦,通過(guò)虛基類(lèi)實(shí)現(xiàn)代理回調(diào)姆怪。自定義類(lèi)可以沒(méi)有父類(lèi)。另外具備向量澡绩,模板,友元俺附,重載運(yùn)算符等多種獨(dú)特語(yǔ)法

Obj-C是針對(duì)mac OS和iOS設(shè)備應(yīng)用程序開(kāi)發(fā)的專(zhuān)屬編程語(yǔ)言肥卡,采用動(dòng)態(tài)繼承,消息方法機(jī)制事镣,沒(méi)有真正的重寫(xiě)機(jī)制步鉴,沒(méi)有私有方法,繼承方式為公有璃哟,具備協(xié)議氛琢,類(lèi)別,Block等獨(dú)有的語(yǔ)法随闪,萬(wàn)用父類(lèi)為NSObject

JAVA是老牌的面向?qū)ο笳Z(yǔ)言阳似,編寫(xiě)的程序在JAVA虛擬機(jī)上運(yùn)行,真正實(shí)現(xiàn)了一次編譯到處運(yùn)行铐伴,具有復(fù)雜的內(nèi)存回收機(jī)制撮奏,單繼承模式,接口語(yǔ)法類(lèi)似Obj-C的協(xié)議

21.抽象與接口的區(qū)別当宴?

聲明方法的存在而不去實(shí)現(xiàn)它的類(lèi)被叫做抽象類(lèi)(abstract class)畜吊,它用于要?jiǎng)?chuàng)建一個(gè)體現(xiàn)某些基本行為的類(lèi),并為該類(lèi)聲明方法户矢,但不能在該類(lèi)中實(shí)現(xiàn)該類(lèi)的情況玲献。不能創(chuàng)建abstract類(lèi)的實(shí)例丝格。然而可以創(chuàng)建一個(gè)變量设联,其類(lèi)型是一個(gè)抽象類(lèi),并讓它指向具體子類(lèi)的一個(gè)實(shí)例醇滥。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法驱证。Abstract類(lèi)的子類(lèi)為它們父類(lèi)中的所有抽象方法提供實(shí)現(xiàn)延窜,否則它們也是抽象類(lèi)為。取而代之抹锄,在子類(lèi)中實(shí)現(xiàn)該方法逆瑞。知道其行為的其它類(lèi)可以在類(lèi)中實(shí)現(xiàn)這些方法荠藤。

接口(interface)是抽象類(lèi)的變體。在接口中获高,所有方法都是抽象的哈肖。多繼承性可通過(guò)實(shí)現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的念秧,沒(méi)有一個(gè)有程序體淤井。接口只可以定義static

final成員變量。接口的實(shí)現(xiàn)與子類(lèi)相似摊趾,除了該實(shí)現(xiàn)類(lèi)不能從接口定義中繼承行為币狠。當(dāng)類(lèi)實(shí)現(xiàn)特殊接口時(shí),它定義(即將程序體給予)所有這種接口的方法砾层。然后漩绵,它可以在實(shí)現(xiàn)了該接口的類(lèi)的任何對(duì)象上調(diào)用接口的方法。由于有抽象類(lèi)肛炮,它允許使用接口名作為引用變量的類(lèi)型止吐。通常的動(dòng)態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類(lèi)型或從接口類(lèi)型轉(zhuǎn)換侨糟,instanceof運(yùn)算符可以用來(lái)決定某對(duì)象的類(lèi)是否實(shí)現(xiàn)了接口碍扔。

22.nil與NULL的區(qū)別?

從Objective-C語(yǔ)言的官方說(shuō)法上看秕重,nil表示指向?qū)ο蟮闹羔樇此^對(duì)象的引用為空不同,NULL表示指向基礎(chǔ)類(lèi)型變量即C語(yǔ)言變量的指針為空。如果在非ARC程序的編寫(xiě)過(guò)程中溶耘,兩個(gè)空是可以互換的套鹅,但是在ARC環(huán)境下,普通指針和對(duì)象引用被嚴(yán)格限制汰具,不能交換使用卓鹿,因此也應(yīng)盡量不互換使用nil與NULL

23. BOOL與bool的區(qū)別?

bool是C語(yǔ)言C99標(biāo)準(zhǔn)中增添的變量類(lèi)型留荔,Object-C僅僅是從C語(yǔ)言繼承了這種類(lèi)型吟孙,該類(lèi)型有true和false兩個(gè)值,表示真和假聚蝶。BOOL是Obj-C獨(dú)有的布爾類(lèi)型杰妓,有YES和NO兩個(gè)值,分別是1和0的宏碘勉。Obj-C中同時(shí)認(rèn)為所有非0的值都是真值巷挥,0為假值

24.OC如何實(shí)現(xiàn)私有方法?

Obj-C語(yǔ)法中并沒(méi)有私有方法的概念,但是由于Obj-C是通過(guò)導(dǎo)入其他類(lèi)的頭文件來(lái)獲取其他類(lèi)所擁有的成員方法的聲明验靡,因此可以采用編寫(xiě)方法時(shí)倍宾,不聲明雏节,或僅在.m文件中的匿名類(lèi)別中聲明的方式,使方法對(duì)外不可見(jiàn)高职,即可達(dá)到方法私有化的目的钩乍。但是外部類(lèi)仍然可以通過(guò)@selector來(lái)訪問(wèn)確實(shí)存在的私有方法,因此嚴(yán)格來(lái)講Obj-C確實(shí)不能真正實(shí)現(xiàn)方法私有化

25.#import和#include的區(qū)別@ class代表什么

預(yù)編譯指令

Objective-C:#import

C怔锌,C++:#include

#import由gcc編譯器支持

在Objective-C中寥粹,#import被當(dāng)成#include指令的改良版本來(lái)使用。除此之外埃元,#import確定一個(gè)文件只能被導(dǎo)入一次涝涤,這使你在遞歸包含中不會(huì)出現(xiàn)問(wèn)題。

使用哪一個(gè)還是由你來(lái)決定岛杀。一般來(lái)說(shuō)妄痪,在導(dǎo)入Objective-C頭文件的時(shí)候使用#import,包含C頭文件時(shí)使用#include楞件。比如:

#import

#include

#include

#import比起#include的好處就是不會(huì)引起交叉編譯

二、@class是用來(lái)做類(lèi)引用的

@class就是告訴編譯器有這么一個(gè)類(lèi)裳瘪,至于類(lèi)的定義是啥不知道

@class一般用于頭文件中需要聲明該類(lèi)的某個(gè)實(shí)例變量的時(shí)候用到土浸,在m文件中還是需要使用#import

26. NSString和NSMutableString的區(qū)別

NSString是一個(gè)不可變的字符串對(duì)象。這不是表示這個(gè)對(duì)象聲明的變量的值不可變彭羹,而是表示它初始化以后黄伊,你不能改變?cè)撟兞克峙涞膬?nèi)存中的值,但你可以重新分配該變量所處的內(nèi)存空間派殷。而NSMutableString是可變的还最,意味著你可以追加它的內(nèi)存空間,或者修改它所分配的內(nèi)存空間中的值毡惜。

27..關(guān)于語(yǔ)句N(xiāo)SString * str= [NSData alloc]init,編譯和運(yùn)行分別str代表什么對(duì)象?

首先拓轻,聲明NSString *str是告訴編譯器,str是一個(gè)指向某個(gè)Objective-C對(duì)象的指針经伙。因?yàn)椴还苤赶虻氖鞘裁搭?lèi)型的對(duì)象扶叉,一個(gè)指針?biāo)嫉膬?nèi)存空間都是固定的,所以這里聲明成任何類(lèi)型的對(duì)象帕膜,最終生成的可執(zhí)行代碼都是沒(méi)有區(qū)別的枣氧。這里限定了NSString只不過(guò)是告訴編譯器,請(qǐng)把str當(dāng)做一個(gè)NSString來(lái)檢查垮刹,如果后面調(diào)用了非NSString的方法达吞,會(huì)產(chǎn)生警告。

接著荒典,你創(chuàng)建了一個(gè)NSData對(duì)象酪劫,然后把這個(gè)對(duì)象所在的內(nèi)存地址保存在str里吞鸭。那么運(yùn)行時(shí),str指向的內(nèi)存空間就是一個(gè)NSData對(duì)象契耿。你可以把str當(dāng)做一個(gè)NSData對(duì)象來(lái)用瞒大。

28.socket通信的幾個(gè)關(guān)鍵步驟

面向連接的socket通信就像與對(duì)方打電話,首先需要通過(guò)電話建立一個(gè)連接搪桂,連接建立好之后透敌,彼此才能雙向通信。它有幾個(gè)關(guān)鍵步驟

服務(wù)器端通常以守護(hù)進(jìn)程的方式實(shí)現(xiàn):

1:創(chuàng)建守護(hù)進(jìn)程

2:獲取或注冊(cè)服務(wù)

3:創(chuàng)建socket并綁定地址

4:開(kāi)始監(jiān)聽(tīng)

5:接收客戶(hù)端連接請(qǐng)求

6:進(jìn)行數(shù)據(jù)傳輸

客戶(hù)端

1:獲取或注冊(cè)服務(wù)

2:創(chuàng)建socket

3:發(fā)送連接請(qǐng)求

29.類(lèi)別意義踢械?與繼承的區(qū)別

當(dāng)我們添加頭文件以后酗电,對(duì)已知的類(lèi),會(huì)自動(dòng)提示你對(duì)這個(gè)類(lèi)添加的方法

主要用途内列,對(duì)于原生不會(huì)造成破壞撵术,使用原生就可以提示出你的方法

30.Core Foundation中提供了哪幾種操作Socket的方法?

CFNetwork话瞧、CFSocket和BSDSocket

31.用id聲明的對(duì)象有什么特性嫩与?

?沒(méi)有*號(hào)

?動(dòng)態(tài)數(shù)據(jù)類(lèi)型

?可以指向任何類(lèi)的對(duì)象(設(shè)置是nil),而不關(guān)心其具體類(lèi)型

?在運(yùn)行時(shí)檢查其具體類(lèi)型

?可以對(duì)其發(fā)送任何(存在的)消息

32交排,self.name=“object”name=“object”有什么區(qū)別划滋?

前者實(shí)際上是調(diào)用了set方法給變量賦值而后者是直接給變量賦值

33.shell中,將command1的輸出作為command2的輸出應(yīng)該使用的命令是埃篓?

重定向命令>

command1>command2

34.下面的數(shù)據(jù)結(jié)構(gòu)中不屬于線性結(jié)構(gòu)的是:棧处坪,鏈表,二叉樹(shù)架专,線性表

線性結(jié)構(gòu):棧同窘,鏈表,線性表

非線性結(jié)構(gòu):二叉樹(shù)

35部脚,oc中有沒(méi)有多繼承想邦,如果沒(méi)有用什么方法替代?

沒(méi)有用協(xié)議代替多繼承

36.常見(jiàn)的Objective-C的數(shù)據(jù)類(lèi)型有哪些委刘,和C的基本數(shù)據(jù)類(lèi)型有什么區(qū)別

OC中常用數(shù)據(jù)類(lèi)型有NSArray,NSDictionary,NSData,NSString,NSMutbleString等等案狠,和C的最大區(qū)別為OC中的類(lèi)型是類(lèi)類(lèi)型,需要實(shí)例化對(duì)象才能用钱雷。C中是一般數(shù)據(jù)類(lèi)型直接操作內(nèi)存空間

37.self.name=@“aa”和_name=@“aa”的區(qū)別

答:self.name=@“aa”是通過(guò)set方法進(jìn)行賦值骂铁,_name=@“aa”是直接復(fù)制給成員變量

38.C語(yǔ)言中指針與數(shù)組的區(qū)別

答:指針是變量可以修改指向的方向,數(shù)組名是地址常量罩抗,不能被修改

39.new delete malloc free的含義

c++:new申請(qǐng)內(nèi)存拉庵,delete釋放掉指針指向的內(nèi)存

c:malloc動(dòng)態(tài)申請(qǐng)內(nèi)存,free釋放指針指向的內(nèi)存

40.常引用什么時(shí)候使用

如果既要利用引用提高程序的效率套蒂,又要保護(hù)傳遞給函數(shù)的數(shù)據(jù)不在函數(shù)中被改變钞支,就要使用常引用

41.c/oc/c++有什么區(qū)別和聯(lián)系

C相對(duì)于C++和OC而言更偏重于邏輯算法茫蛹,這是因?yàn)镃是面向過(guò)程,C++和OC都是面向?qū)ο笏感和C++的聯(lián)系:C是C++的一個(gè)自洽子集婴洼,C++是C的超集,OC是C的擴(kuò)展撼嗓,C++和OC基本兼容C的語(yǔ)法柬采。

42.const的用法

const修飾變量表示該變量是只讀變量(有些人管它叫常量),即只能引用而不能修改

constint *p;表示指針變量P指向的數(shù)據(jù)不能改

int*const p;表示指針變量P的值不能該且警,或者說(shuō)是指針P的指向不能改

43.[pool release]和[pool drain]有什么區(qū)別

drain和release都會(huì)促使自動(dòng)釋放池對(duì)象向池內(nèi)的每一個(gè)對(duì)象發(fā)送release消息來(lái)釋放池內(nèi)對(duì)象的引用計(jì)數(shù)粉捻,但是release觸發(fā)的這個(gè)操作,不會(huì)考慮對(duì)象是否需要release斑芜,而drain會(huì)在自動(dòng)釋放池向池內(nèi)對(duì)象發(fā)送release消息的時(shí)候肩刃,考慮對(duì)象是否需要release

44.自動(dòng)釋放池和GC一樣嗎,iphone有沒(méi)有GC

在引用計(jì)數(shù)環(huán)境下杏头,

ios是沒(méi)有垃圾回收的盈包,自動(dòng)釋放池是oc中管理內(nèi)存的一種方式,它和gc是本質(zhì)區(qū)別的醇王,自動(dòng)釋放池管理內(nèi)存的前提是呢燥,必須把要管理內(nèi)存的對(duì)象加入池內(nèi),才會(huì)生效厦画。而gc是不斷檢測(cè)當(dāng)前程序中是否有不再使用的內(nèi)存進(jìn)而釋放。

45.當(dāng)A類(lèi) 中的某個(gè)方法執(zhí)行到某處時(shí)滥朱,這時(shí)想在B類(lèi)中執(zhí)行某個(gè)方法根暑,如何做?并做簡(jiǎn)單說(shuō)明

用代理執(zhí)行代理方法

說(shuō)明:在b類(lèi)中實(shí)現(xiàn)協(xié)議方法徙邻,設(shè)置a的代理為b排嫌,在指定方法內(nèi)調(diào)用代理的協(xié)議方法

46.類(lèi)別的作用?

答案:category可以在不獲悉,不改變?cè)瓉?lái)代碼的情況下往里面添加新的方法缰犁,只能添加淳地,不能刪除修改。

并且如果類(lèi)別和原來(lái)類(lèi)中的方法產(chǎn)生名稱(chēng)沖突帅容,則類(lèi)別將覆蓋原來(lái)的方法颇象,因?yàn)轭?lèi)別具有更高的優(yōu)先級(jí)。

類(lèi)別主要有3個(gè)作用:

(1)將類(lèi)的實(shí)現(xiàn)分散到多個(gè)不同文件或多個(gè)不同框架中并徘。

(2)創(chuàng)建對(duì)私有方法的前向引用遣钳。

(3)向?qū)ο筇砑臃钦絽f(xié)議。

47.簡(jiǎn)述extern

C的作用

可以在C++中使用C的已編譯好的函數(shù)模塊,在c++中么用到c語(yǔ)言寫(xiě)的函數(shù)麦乞,聲明一下,在DLL中經(jīng)吃誊睿看到,避免C++

name mangling劝评,主要用于動(dòng)態(tài)鏈接庫(kù),使得導(dǎo)出函數(shù)名稱(chēng)與C語(yǔ)言規(guī)則一致(不改變)倦淀,方便不同的編譯器甚至是不同的開(kāi)發(fā)語(yǔ)言調(diào)用蒋畜。

extern

"C"是告訴C++編譯器以C Linkage方式編譯,也就是抑制C++的name

mangling機(jī)制撞叽。

編程:

1.寫(xiě)出@proerty(nonatomic,retain)Person

*person;@synthesize person具體實(shí)現(xiàn)姻成。

- (void)setPerson:(Person *)person

{

if(_person !=person){

[_personrelease];

[_person =person retain];

}

}

- (Person *)person

{

return _person;

}

2.從普通id類(lèi)型對(duì)象轉(zhuǎn)換成數(shù)字對(duì)象,因?yàn)榕渲昧讼薅ㄔ~.1f能扒,所以結(jié)果四舍五入佣渴,并保留一位小數(shù)

NSDictionary* rowData =[NSDictionarydictionaryWithObjectsAndKeys:@"46.95",@"price",nil];

NSLog(@"a double value:%.1f",[(NSNumber*)[rowDataobjectForKey:@"price"] doubleValue]);

輸出:

a double value:47.0

3,寫(xiě)一個(gè)委托的interface

#import

@protocolMyDelegate;//聲明

@interfaceMyClass:NSobject

{

iddelegate;

}

@end

@protocolMyDelegate//委托方法

-(void)selector:(NSString *)args;

@end

4:請(qǐng)看下面一段代碼

staticint a=1;

intmain(){

intb=2;

char*c=NUll;

c=(char*)malloc(100*sizeof(char));

return0;

}

問(wèn):1初斑,訪問(wèn)abc三者的效率從高到低依次是:

bca

2辛润,在最壞情況下排序速度最快的是:歸并排序

復(fù)雜度最高的是:快排

a,快排,冒泡见秤,堆砂竖,歸并

5.看下面的程序

=========================================

NSMutableArray *arr = [[NSMutableArrayarray] retain];

NSString *str = [NSStringstringWithFormat:@"test"];

[str retain];

[arr addObject:str];

NSLog(@"%@%lu",str,[strretainCount]);

[str retain];

[str release];

[str release];

NSLog(@"%@%lu",str,[strretainCount]);

[arr removeObject:str];

NSLog(@"%@%lu",str,[strretainCount]);

==================================================

三次打印的retainCount分別是什么,為什么鹃答?

答:

分別是3乎澄,2,1测摔,

初始化的時(shí)候的為1置济,retain的時(shí)候+1,往數(shù)組里add的時(shí)候+1锋八,release的時(shí)候-1浙于,從數(shù)組里移除的時(shí)候-1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市挟纱,隨后出現(xiàn)的幾起案子羞酗,更是在濱河造成了極大的恐慌,老刑警劉巖紊服,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件檀轨,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡欺嗤,警方通過(guò)查閱死者的電腦和手機(jī)参萄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)煎饼,“玉大人拧揽,你說(shuō)我怎么就攤上這事。” “怎么了淤袜?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵痒谴,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我铡羡,道長(zhǎng)积蔚,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任烦周,我火速辦了婚禮尽爆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘读慎。我一直安慰自己漱贱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布夭委。 她就那樣靜靜地躺著幅狮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪株灸。 梳的紋絲不亂的頭發(fā)上崇摄,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音慌烧,去河邊找鬼逐抑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛屹蚊,可吹牛的內(nèi)容都是我干的厕氨。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼汹粤,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼命斧!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起玄括,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤冯丙,失蹤者是張志新(化名)和其女友劉穎肉瓦,沒(méi)想到半個(gè)月后遭京,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泞莉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年哪雕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鲫趁。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡斯嚎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情堡僻,我是刑警寧澤糠惫,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站钉疫,受9級(jí)特大地震影響硼讽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜牲阁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一固阁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧城菊,春花似錦备燃、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至法瑟,卻和暖如春冀膝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背霎挟。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工窝剖, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人酥夭。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓赐纱,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親熬北。 傳聞我的和親對(duì)象是個(gè)殘疾皇子疙描,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • ———————————————回答好下面的足夠了---------------------------------...
    恒愛(ài)DE問(wèn)候閱讀 1,712評(píng)論 0 4
  • 序言 目前形勢(shì),參加到iOS隊(duì)伍的人是越來(lái)越多讶隐,甚至已經(jīng)到供過(guò)于求了起胰。今年,找過(guò)工作人可能會(huì)更深刻地體會(huì)到今年的就...
    恒愛(ài)DE問(wèn)候閱讀 5,330評(píng)論 0 9
  • 1巫延、Objective-C的類(lèi)可以多重繼承么效五?可以采用多個(gè)協(xié)議么?答:不可以多重繼承炉峰,可以采用多個(gè)協(xié)議畏妖。2、#im...
    亦晴工作室閱讀 618評(píng)論 0 3
  • *面試心聲:其實(shí)這些題本人都沒(méi)怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來(lái)就是把...
    Dove_iOS閱讀 27,125評(píng)論 29 470
  • 關(guān)于屬性動(dòng)畫(huà)的博客疼阔。網(wǎng)上已經(jīng)有很多了戒劫。我看的第一篇屬性動(dòng)畫(huà)的博客就是鴻洋的博客:http://blog.csdn....
    AxeChen閱讀 966評(píng)論 0 9