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