
課程咨詢(xún): 400-996-5531 / 投訴建議: 400-111-8989
認(rèn)真做教育 專(zhuān)心促就業(yè)
1. #import與@class、#include三者有什么相同與不同?
在上篇文章中專(zhuān)門(mén)有描述
補(bǔ)充一點(diǎn):
@class與#import區(qū)別:
@class 避免循環(huán)引用,引用多為實(shí)體類(lèi)頭文件
如果在a.h里import了b.h,那么所有import了a.h的文件都會(huì)同時(shí)與b.h產(chǎn)生編譯依賴(lài),一旦b.h被修改,所有應(yīng)用了a.h 的文件也要被重新編譯。如果可以使用前置聲明而不是import b.h,而是用@class,就可以解除這種依賴(lài)關(guān)系,b.h被修改,只import了a.h的文件就未必需要重新編譯。
2.在頭文件中聲明類(lèi)函數(shù)時(shí),-(void)print;
開(kāi)頭的負(fù)號(hào)(-)通知Objective-C編譯器,該方法是一個(gè)實(shí)例方法。其他唯一的選擇是正號(hào)(+),它表示類(lèi)方法。類(lèi)方法是對(duì)類(lèi)本身執(zhí)行某些操作的方法,例如創(chuàng)建類(lèi)的新實(shí)例。
3.import "Fraction.m"
…
Fraction *mFraction;
mFraction = [Fraction alloc];
mFraction = [mFraction init];
…
[mFraction release];
alloc是allocate的縮寫(xiě)。因?yàn)橐獮樾聦?duì)象分配內(nèi)存存儲(chǔ)空間。
將alloc消息發(fā)送給一個(gè)類(lèi)時(shí),便獲得該類(lèi)的新實(shí)例,返回值(已分配的實(shí)際Fraction對(duì)象)存儲(chǔ)在變量mFraction中,alloc方法保證對(duì)象的所有實(shí)例變量都變成初始狀態(tài)。但是,這并不意味著該對(duì)象進(jìn)行了適當(dāng)?shù)某跏蓟M(jìn)而可以使用。在分配對(duì)象之后,還必須對(duì)它進(jìn)行初始化操作:
mFraction = [mFraction init];
這里再次使用了一個(gè)并非自己編寫(xiě)的方法。init方法用于初始化類(lèi)的實(shí)例變量。mFraction將init消息發(fā)送給該對(duì)象自己,即,要在這里初始化一個(gè)特殊的Fraction對(duì)象,因此它是沒(méi)有發(fā)送給類(lèi),而是給了類(lèi)的一個(gè)實(shí)例。(Andy注:init函數(shù)寫(xiě)的好奇怪,很好奇源代碼中init里面是怎么實(shí)現(xiàn)的???)
4.new方法可以將alloc和init的操作結(jié)合起來(lái),F(xiàn)raction *mFraction = [Fraction new];可分配和初始化新的Fraction。
5.NSLog中%x將用十六進(jìn)制格式顯示一個(gè)值,該值不帶0x,并用a到f之間的小寫(xiě)字符表示十六進(jìn)制數(shù)字。要使用前面的0x顯示該值,使用格式字符%#x,
rgbColor = 0xFFEF0D;
NSLog("Color is %#x\n",rgbColor);
%e,使用科學(xué)計(jì)數(shù)法顯示數(shù)值
%f,使用浮點(diǎn)計(jì)數(shù)法顯示
%g,系統(tǒng)自行正確判斷是應(yīng)該使用浮點(diǎn)計(jì)數(shù)法還是科學(xué)計(jì)數(shù)法來(lái)顯示浮點(diǎn)值。
6.OC編譯器默認(rèn)將所有浮點(diǎn)數(shù)字看做double值,若手動(dòng)定義float類(lèi)型值,需要在數(shù)字后面加f或F:12.5f
7.如果直接把限定詞long、long long、short、unsigned、signed放在int聲明之前,那么所聲明的整型變量在某些計(jì)算機(jī)上具有擴(kuò)展的值域。例如 long int factorial;其中,long變量的具體精度是由計(jì)算機(jī)系統(tǒng)決定的(看計(jì)算機(jī)是多少位)
long double變量寫(xiě)成尾部帶有字母l或L的浮點(diǎn)變量,1.233e+7L
同理在NSLog中%Lf用浮點(diǎn)表示法顯示long double的值,%Le用科學(xué)計(jì)數(shù)法顯示同樣的值,而%Lg將告訴NSLog在%Lf和%Le之間任選一個(gè)使用。
8.@synthesize關(guān)鍵字用于告訴Objective-C編譯器,為.h文件中聲明的實(shí)例變量生成一對(duì)設(shè)置函數(shù)方法和獲取函數(shù)方法。(setXXX(),getXXX() )。
【免責(zé)聲明】本文部分系轉(zhuǎn)載,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé)。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)?jiān)?0日內(nèi)與聯(lián)系我們,我們會(huì)予以更改或刪除相關(guān)文章,以保證您的權(quán)益!