oc複習筆記

BOOL使用8位存儲,YES定義爲1NO定義爲0,大於1不爲YES,跟標準C不同。


id是一種泛型,用於表示任何類的對象,id實際上是一個指針,指向其中的某個結構



@implementation是一個編譯器指令,表明你將爲某個類提供代碼



繼承(X是一個Yisa)

Objective-C不支持多繼承,我們可以通過Objective-C的其他特性獲取多繼承的優點,例如分類和協議


方法調度

當代碼發送消息時,Objective-C的方法調度將在當前分類中搜索相應的方法,如果找不到,則在該對象的超類中進行查找



複合(X有一個Yhas)

if (self = [super init]) { //[super init]得結果賦給selfObjective-C的標準慣例,爲了防止超類的初始化過程中返回的對象不同於原先創建的對象



setter方法根據他所要更改的屬性的名稱來命名,並加上set


getter方法根據其返回的屬性的名稱來命名,不要加get


3種方式可以創建新的NSRange

第一種:直接給字段賦值


NSRange range;


range.location = 17;


range.length = 4;


第二種:應用C語言的聚合結構賦值機制


NSRange range = { 17, 4 };



第三種:使用Cocoa提供的快捷函數NSMakeRange():


NSRange range = NSMakeRange(17,4);





- (NSComparisonResult) compare: (NSString *) string;



- (NSRange) rangeOfString: (NSString *) aString; //看字符串中是否包含其他字符串



- componentsSeparatedByString//切分NSArray


- componentsJoinedByString//合併NSString



保證內存佔用比較小的一種方法,分段處理


int i;


for (i = 0; i < 1000000; i++) {


id object = [someArray objectAtIndex: i];


NSString *desc = [object description];


// and do something with the description


}


節省內存的方法:


NSAutoreleasePool *pool;


pool = [[NSAutoreleasePool alloc] init];


int i;


for (i = 0; i < 1000000; i++) {


id object = [someArray objectAtIndex: i];


NSString *desc = [object descrption];


// and do something with the description


if (i % 1000 == 0) {


[pool release];


pool = [[NSAutoreleasePool alloc] init];


}


}


[pool release]


//自動釋放池以棧的形式存在






創建類別


//如果你希望想一個array或者dictionary裏面添加一個個數字,你需要一個個的封裝,如果多,你會瘋掉,可以爲string類添加一個類別來完成這項工作



1)聲明對象 //與類的聲明格式類似


@interface NSString (NumberConvenience)


- (NSNumber *) lengthAsNumber;


@end // NumberConvenience



實現部分


@implementation NSString (NumberConvenience)


- (NSNumber *) lengthAsNumber


{


unsigned int length = [self length];  //獲得字符串的長度


return ([NSNumber numberWithUnsignedInt: length]);


} // lengthAsNumber


@end




第一:無法向類別裏面添加新的實例變量,類別裏面沒有位置容納實例變量

第二:若名稱衝突,類別的優先級更高




run循環


[[NSRunLoop currentRunLoop] run];


是一種cocoa構造,它一直處於阻塞狀態(即不執行任何處理),知道某些有趣的事情發生爲止


//這個run方法將一直運行而不會返回,後面的代碼將一直不執行




NSObject提供了一個名爲respondsToSelector:的方法,該方法訪問對象以確定其是否能夠響應某個特定的消息




NSData char*的轉化


const char *string = "Hi there, this is a C string!";


NSData *data = [NSData dataWithBytes: string


                           length: strlen(string) + 1];


NSLog (@"data is %@", data);  //輸出爲ascll


NSLog (@"%d byte string is '%s'", [data length], [data bytes]);  //格式化輸出要的內容



[phrase writeToFile: @"/tmp/verbiage.txt"  atomically: YES];atomically 是用於通知cocoa是否應該首先將文件內容保存在臨時文件中,當文件保存成功後,再將該臨時文件和原始文件交換




Cocoa中提供NSPredicate的類,它用於指定過濾的條件


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章