iOS筆記篇-熟悉OC<一>

前言

該部分篇章懂牧,將會比較碎侈净。主要用于記錄自己開發(fā)和書籍中看到比較有價(jià)值的知識點(diǎn)的記錄和歸納。

Objective-C語言

一僧凤、關(guān)于OC語言

OC語言采用的是“消息結(jié)構(gòu)”而非“函數(shù)調(diào)用”畜侦。是由Smalltalk演化而來。
二者的關(guān)鍵差別是:消息結(jié)構(gòu)的語言拼弃,其運(yùn)行時所應(yīng)該執(zhí)行的代碼由運(yùn)行環(huán)境來決定夏伊,運(yùn)行時才會去查找需要執(zhí)行的方法;
函數(shù)調(diào)用語言吻氧,則有編譯器決定溺忧,運(yùn)行時按照“虛方法表”來查出到底要執(zhí)行那個函數(shù)。

OC是C的“超集”(superset)
OC的聲明比如:NSString* ptr; 抓喲是為了所有的對象所在控件都必須分配在堆空間而不是椂⑺铮空間鲁森。(結(jié)合C中malloc, alloc就比較好理解這一點(diǎn))
在C里面棧空間可以自動清理振惰,出棧之后將自動回收歌溉。而堆空間則是手動的調(diào)用free方法。 而OC將對象放置在堆中骑晶,采用的是引用計(jì)數(shù)的方法來管理內(nèi)存痛垛。MRC中提到所謂的“黃金法則”。
OC中除了基本的int, char ,double等使用的是椡盎祝空間匙头,其中CoreGraphics使用的也是,比如CGRect實(shí)質(zhì)就是C語言中的結(jié)構(gòu)體仔雷。

總之蹂析,OC是在C語言的基礎(chǔ)上添加了面向?qū)ο蟮奶匦裕瑸槠涑拧C使用動態(tài)半丁的消息結(jié)構(gòu)电抚,在運(yùn)行時才會檢查對象的類型。接收到一條消息以后竖共,究竟應(yīng)該執(zhí)行何種代碼取決于運(yùn)行期的環(huán)境而非編譯環(huán)境蝙叛。

向前聲明(forward declaring)

@class Person
這樣可以減少類的使用者所需引入的頭文件數(shù)量」可以減少編譯習(xí)慣只有在真正需要的地方甥温,才有真正需要的使用才引入頭文件锻煌。一般來說在類的。h中使用向前聲明姻蚓,在.m中使用#import宋梧。來盡可能的降低類之間的耦合。
如果無法使用向前聲明狰挡,比如要繼承和協(xié)議部分捂龄,盡量把“該類遵守”的這條聲明移到"class-continuation分類"中。如果不行加叁,就把協(xié)議單獨(dú)放在一個頭文件中倦沧,然后將其引入。

二它匕、字面量

NSNumber* someNumber = @'a';
NSArray* animals = @[@"cat", @"dog"];
NSDictionary* personData = @{@"name": @"Marry", @"age": @28};

注意點(diǎn)

1.關(guān)于nil

NSArray* tempArray0 = [NSArray arrayWithObjects:obj1, obj2, obj3, obj4, nil];
NSArray* tempArray1 = @[obj1, obj2, obj3, obj4];
如果obj2為nil,那么tempArray0 (obj1) tempArray1執(zhí)行的時候?qū)挟惓U谷凇Uf明nil不能被加入Array中,所以字面量更加安全豫柬。字典雷同告希。

2.可變數(shù)組和字典的處理限制性的處理

NSMutableArray* mutable = [@[@1, @2, @3, @4] mutableCopy];

三、C語言中宏在OC中的使用

完全可以用烧给,因?yàn)镺C是C的超集燕偶,但是要少用。應(yīng)該多用類型常量來替代础嫡。

關(guān)于類型常量
如果只是在本類中使用指么,那么請?jiān)趯?shí)現(xiàn)文件中定義,并在前面加上字母k,如果常量在類以外可見榴鼎,那么使用類名作為前綴伯诬。OC沒有命名空間的蓋簾,所以最好用類名來區(qū)分巫财。

編譯單元里面的類型常量
static const NSTimeInterval kDuration = 0.3;
@implementation EOCAnimatedView
...
@end

加static限定了其的使用范圍盗似,外部被引用會編譯報(bào)錯,不添加默認(rèn)會修飾為extern,而且修飾static也可以規(guī)避比如另外一個類,也聲明了一個kDuration導(dǎo)致重復(fù)聲明的錯誤翁涤。
const保證不會被改變桥言,試圖被修改將會報(bào)錯萌踱。

外界常量
//.h中
extern NSString* const EOCStringConstant;
//.m中
NSString* const EOCStringConstant = @"VALUE";

四葵礼、枚舉類型

在OC中和C語言一樣應(yīng)該多使用枚舉類型。

OBJC_ENUM(NSInteger, WIFIStatus){
    DisConnected,
    Connecting,
    Connected
};
//主要用于單一枚舉的展示

OBJC_OPTIONS(NSInteger, FoodType){
    Fruir     = 1 << 0,
    Vegetable = 1 << 1,
};
//主要用于可以疊加存在的情況并鸵,可以使用對應(yīng)的'|'和'&'來操作鸳粉。

注意點(diǎn):
當(dāng)使用枚舉的時候,遇到switch就別寫default來方便編譯器把未知的類型园担,通知到開發(fā)者届谈。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末枯夜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子艰山,更是在濱河造成了極大的恐慌湖雹,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件曙搬,死亡現(xiàn)場離奇詭異摔吏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)纵装,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門征讲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人橡娄,你說我怎么就攤上這事诗箍。” “怎么了挽唉?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵滤祖,是天一觀的道長。 經(jīng)常有香客問我橱夭,道長氨距,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任棘劣,我火速辦了婚禮俏让,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘茬暇。我一直安慰自己首昔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布糙俗。 她就那樣靜靜地躺著勒奇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪巧骚。 梳的紋絲不亂的頭發(fā)上赊颠,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機(jī)與錄音劈彪,去河邊找鬼竣蹦。 笑死,一個胖子當(dāng)著我的面吹牛沧奴,可吹牛的內(nèi)容都是我干的痘括。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼纲菌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嚣潜,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤椅贱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后犯犁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡酸役,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年涣澡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丧诺。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡入桂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出驳阎,到底是詐尸還是另有隱情抗愁,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布呵晚,位于F島的核電站蜘腌,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏饵隙。R本人自食惡果不足惜撮珠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望金矛。 院中可真熱鬧芯急,春花似錦筛武、人聲如沸艺演。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至骚秦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間埂奈,已是汗流浹背嗜湃。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工奈应, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人购披。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓杖挣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親刚陡。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

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

  • 1.項(xiàng)目經(jīng)驗(yàn) 2.基礎(chǔ)問題 3.指南認(rèn)識 4.解決思路 ios開發(fā)三大塊: 1.Oc基礎(chǔ) 2.CocoaTouch...
    陽光的大男孩兒閱讀 4,971評論 0 13
  • 2蝙云、#import和#include的區(qū)別是什么勃刨?#import<> 跟 #import""有什么區(qū)別身隐? .#im...
    AlanGe閱讀 311評論 0 0
  • 307隙轻、setValue:forKey和setObject:forKey的區(qū)別是什么大脉? 答:1, setObjec...
    AlanGe閱讀 1,532評論 0 1
  • 生活就像快樂女生,能活下來的都是純爺們苍姜!
    人氣小哥閱讀 107評論 0 0
  • 楊欣羽今年大二,擔(dān)任著新聞班的學(xué)習(xí)委員,她就是那種特別好相處的人丝格,平時大家都特別喜歡她显蝌。對了曼尊,她也挺樂觀的...
    海上舟啊閱讀 463評論 0 1