本文為大地瓜原創(chuàng)拷泽,歡迎知識共享夹姥,轉(zhuǎn)載請注明出處。
雖然你不注明出處我也沒什么精力和你計(jì)較儡陨。
作者微信號:christgreenlaw
#import
的意義在于可以防止重復(fù)拷貝褪子,多次書寫并不會多次引用頭文件。
OC中是可以直接寫C代碼的骗村。(OC完整的支持C嫌褪,實(shí)際上OC是C的擴(kuò)充)
類的{}中寫的屬性,默認(rèn)是無法訪問的胚股,可以在之前加上@public笼痛,就可以通過指針形式類似訪問結(jié)構(gòu)體屬性那樣來訪問。(OC類的本質(zhì)就是結(jié)構(gòu)體)
@interface TestClass : NSObject
{
int _ok;
@public
int _hehe;
}
TestClass *p = [TestClass new];
p->_hehe = 8;//OK
p->_ok = 3;//not OK
只要通過一個(gè)類調(diào)用類的new方法, 也就是給類發(fā)送一個(gè)叫做new的消息之后,系統(tǒng)內(nèi)部就會做3件事情:
- 為類創(chuàng)建出來的對象分配存儲空間
- 初始化類創(chuàng)建出來的對象中的屬性
- 返回類創(chuàng)建出來的對象對應(yīng)的地址
類方法和對象方法之間的調(diào)用:
- 對象方法中可以直接調(diào)用類方法
- 類方法中間接調(diào)用對象方法 (還沒有對象呢就調(diào)用對象方法缨伊,強(qiáng)烈不建議這樣做)
- 類方法中可以直接調(diào)用其它類方法
- 對象方法中可以直接調(diào)用對象方法
成員變量不能在定義的時(shí)候初始化({}中的寫法)
方法可以只有聲明沒有實(shí)現(xiàn), 編譯不會報(bào)錯(cuò), 但是運(yùn)行會報(bào)錯(cuò)(unrecognized selector)
類可以只有實(shí)現(xiàn)沒有聲明摘刑,也是可以用的,但是不要這樣寫
字符串的長度計(jì)算:
char string[] = "ok"; // o k \0
// 包含\0
size_t size = sizeof(string);
printf("size = %lu\n", size);
// 不包含\0
size_t length = strlen(string);
printf("length = %lu\n", length);
// 不包含\0的
// 計(jì)算出來的是個(gè)數(shù), 而不是占用的字節(jié)數(shù)
NSString *str1 = @"ok";
NSString *str2 = @"大地瓜";
NSLog(@"str1_len = %lu", [str1 length]);
NSLog(@"str2_len = %lu", [str2 length]);
#pragma mark - A 和#pragma mark A區(qū)別
#pragma mark - A會產(chǎn)生分割線 而#pragma mark A沒有分割線