零基礎(chǔ)如何學(xué)習(xí)ios開(kāi)發(fā)
零基礎(chǔ)如何學(xué)習(xí)ios開(kāi)發(fā)
隨著企業(yè)對(duì)iOS開(kāi)發(fā)人才的青睞,越來(lái)越多的人都加入到了iOS培訓(xùn)中,學(xué)習(xí)iOS開(kāi)發(fā)與iPhone手機(jī)開(kāi)發(fā)等熱度中,那么到底iOS開(kāi)發(fā)好不好學(xué)?以下是學(xué)習(xí)啦小編分享給大家的零基礎(chǔ)學(xué)習(xí)ios開(kāi)發(fā)的方法的資料,希望可以幫到你!
零基礎(chǔ)學(xué)習(xí)ios開(kāi)發(fā)的方法
若非計(jì)算機(jī)專業(yè)的同學(xué),首先可以先買(mǎi)本書(shū)學(xué)習(xí)下C語(yǔ)言基礎(chǔ),建議看下《C Primer Plus》,了解編程語(yǔ)言的基礎(chǔ)及邏輯。
然后學(xué)習(xí)objective-c語(yǔ)言,因?yàn)樵缙谝恢笔怯胦bjective-c語(yǔ)言開(kāi)發(fā)ios系統(tǒng)應(yīng)用程序,所以學(xué)好這門(mén)語(yǔ)言還是很有必要。
Swift,蘋(píng)果于2014年WWDC(蘋(píng)果開(kāi)發(fā)者大會(huì))發(fā)布的新開(kāi)發(fā)語(yǔ)言,用于編寫(xiě) iOS 和 OS X 應(yīng)用。目前是蘋(píng)果主推的開(kāi)發(fā)語(yǔ)言,這幾年逐漸會(huì)向Swift過(guò)渡,有必要學(xué)習(xí)掌握。
然后就是xcode集成開(kāi)發(fā)工具的使用熟悉,逐步掌握各控制器、視圖層、數(shù)據(jù)層、數(shù)據(jù)結(jié)構(gòu)及算法的應(yīng)用實(shí)踐(最好有簡(jiǎn)單的demo,自己同時(shí)動(dòng)手熟悉),建議買(mǎi)本系統(tǒng)的書(shū)籍或找相應(yīng)的課程逐步深入學(xué)習(xí)(最好是objective-c與swift兩者都涉及的,可以先掌握objective-c)。
(可以從一些網(wǎng)站或者ios開(kāi)發(fā)相關(guān)論壇去學(xué)習(xí)和交流,解決自己學(xué)習(xí)過(guò)程中的一些問(wèn)題)
上述都掌握之后,就可以找一些別人的簡(jiǎn)單應(yīng)用程序例子學(xué)習(xí),能做到完全看懂別人的代碼是做什么的,然后自己也照著敲一下,熟悉整個(gè)模塊。
掌握一定的經(jīng)驗(yàn)后,然后就是自己動(dòng)手敲代碼,多學(xué)習(xí)多交流,完成自己的應(yīng)用,并發(fā)布上架。
之后總之就是多學(xué)習(xí)總結(jié)交流,提升自己,希望您成為一名優(yōu)秀的ios開(kāi)發(fā)工程師!
iOS的簡(jiǎn)介
iOS是運(yùn)行于iPhone、iPod touch和iPad設(shè)備的操作系統(tǒng),它管理設(shè)備硬件并為手機(jī)本地應(yīng)用程序的實(shí)現(xiàn)提供最基本的技術(shù)知識(shí)。那么如果設(shè)備不一樣的話,也就是操作系統(tǒng)所用到的應(yīng)用程序不一樣了,像:Phone、Mail以及Safari,它們都能夠?yàn)橛脩籼峁┓浅?biāo)準(zhǔn)的系統(tǒng)服務(wù)。
iPhone SDK包含開(kāi)發(fā)、安裝及運(yùn)行本地應(yīng)用程序所需的工具和接口。本地應(yīng)用程序使用iOS系統(tǒng)框架和Objective-C語(yǔ)言進(jìn)行構(gòu)建,并且直接運(yùn)行于iOS設(shè)備。它與web應(yīng)用程序不同,一是它位于所安裝的設(shè)備上,二是無(wú)論網(wǎng)絡(luò)是不是連接它都能運(yùn)行??梢哉f(shuō)本地應(yīng)用程序和其他系統(tǒng)應(yīng)用程序所處的地位都是一樣的。本地應(yīng)用程序和用戶數(shù)據(jù)都可以通過(guò)iTunes同步到用戶計(jì)算機(jī)。
雖然應(yīng)用程序通常會(huì)和底層硬件會(huì)開(kāi)來(lái),但是應(yīng)用程序代碼還需要考慮設(shè)備之間存在的區(qū)別。例如:iPad和iPod touch不能打開(kāi)包含電話號(hào)碼的URL但是iPhone完全可以的。 那么如果想要想找到了未來(lái)求職的方向,找到未來(lái)的曙光,掌握未來(lái)是互聯(lián)網(wǎng)的時(shí)代。可以選擇北京藍(lán)鷗ios培訓(xùn)是所有講師精心打造課程,加上他們最細(xì)心的講解,一定會(huì)讓你看到iOS發(fā)展的前景。
零基礎(chǔ)學(xué)習(xí)iOS的總結(jié)
學(xué)習(xí)iOS這么長(zhǎng)時(shí)間所遇到了很多問(wèn)題,一路走來(lái)總結(jié)了一些自己遇到的問(wèn)題:
1.關(guān)聯(lián)
objc_setAssociatedObject關(guān)聯(lián)是指把兩個(gè)對(duì)象相互關(guān)聯(lián)起來(lái),使得其中的一個(gè)對(duì)象作為另外一個(gè)對(duì)象的一部分。
2.tableView的beginUpdates 和 endUpdates
3.關(guān)于代碼與storyBoard的自動(dòng)布局
4.國(guó)際化與本地化,為了實(shí)現(xiàn)全球化
5.技巧
可以通過(guò)設(shè)置Scheme來(lái)設(shè)置app所運(yùn)行的語(yǔ)言,你想要什么語(yǔ)言就是什么語(yǔ)言,而不用重新設(shè)置系統(tǒng)的語(yǔ)言。
6.ios8新特性,加載js
如果我想要加載一個(gè)形如網(wǎng)頁(yè)的東西,那么我需要對(duì)整個(gè)網(wǎng)頁(yè)進(jìn)行動(dòng)態(tài)的編輯,圖文混編,但是這樣做那面會(huì)帶來(lái)很困難的操作,其實(shí)服務(wù)端那邊很好的可以解決這個(gè)問(wèn)題,用一個(gè)網(wǎng)頁(yè)即可以搞定。服務(wù)端那邊只需返回一個(gè)html文檔,然后客戶端根據(jù)這個(gè)html文檔進(jìn)行解析即可。
一、WKWebView新特性
· 在性能、穩(wěn)定性、功能方面有很大提升(最直觀的體現(xiàn)就是加載網(wǎng)頁(yè)是占用的內(nèi)存,模擬器加載百度與開(kāi)源中國(guó)網(wǎng)站時(shí),WKWebView占用23M,而UIWebView占用85M);
· 允許JavaScript的Nitro庫(kù)加載并使用(UIWebView中限制);
· 支持了更多的HTML5特性;
· 高達(dá)60fps的滾動(dòng)刷新率以及內(nèi)置手勢(shì);
· 將UIWebViewDelegate與UIWebView重構(gòu)成了14類與3個(gè)協(xié)議
7.技巧
寫(xiě) 函數(shù)的時(shí)候一定要判斷數(shù)據(jù)的安全性,這樣出錯(cuò)的幾率就會(huì)很小,尤其是要判斷它的類型安全,是否為空等,不然程序會(huì)奔潰。還有需要注意的地方就是,寫(xiě)每一個(gè)函數(shù)的時(shí)候要多方面進(jìn)行考慮,考慮代碼的合法性。使用前不判斷參數(shù)的正確性,在函數(shù)內(nèi)部對(duì)參數(shù)的可靠性進(jìn)行判斷。如果這樣的話,你用到函數(shù)的時(shí)候都需要對(duì)這些參數(shù)進(jìn)行判斷其合法性如果放倒函數(shù)中那么只需要判斷一次就可以了。
8.應(yīng)用內(nèi)購(gòu)買(mǎi)
9.利用sqlite創(chuàng)建索引,索引是關(guān)系數(shù)據(jù)庫(kù)中用于存放每一條記錄的一種對(duì)象,主要目的是加快數(shù)據(jù)的讀取速度和完整性檢查。索引是對(duì)數(shù)據(jù)庫(kù)表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu),使用索引可快速訪問(wèn)數(shù)據(jù)庫(kù)表中的特定信息。
10.數(shù)據(jù)庫(kù)版本的更新,當(dāng)應(yīng)用數(shù)據(jù)表需要添加新表的時(shí)候,需要對(duì)數(shù)據(jù)插入新的字段,那么久需要更新數(shù)據(jù)庫(kù)
11.友盟統(tǒng)計(jì),當(dāng)應(yīng)用上線后可以觀察到應(yīng)用的日志文件,crash日志,頁(yè)面記時(shí)日志,收集并歸類崩潰日志,提供錯(cuò)誤管理及分析工具,幫助開(kāi)發(fā)者更好的解決問(wèn)題,從而提高應(yīng)用的穩(wěn)定性,改善應(yīng)用質(zhì)量。
12.可以獲取手機(jī)上的語(yǔ)言?你知道嗎
13.使用js的時(shí)候需要使用webView
[webView stringByEvaluatingJavaScriptFromString:scriptString];
14.做常用設(shè)備登陸的策略可以使用服務(wù)器,服務(wù)器把所有登陸過(guò)的設(shè)備都存儲(chǔ)下來(lái)。
15.涉及到系統(tǒng)偏好設(shè)置的選項(xiàng),把它都放到一個(gè)文件中,這樣修改起來(lái)比較容易。
16.利用VVDocumenter-Xcode
自動(dòng)生成注釋,也就是xcode的插件.運(yùn)行VVDOcumenter-Xcode編譯后,重新打開(kāi)xcode即可以使用了
17.如何使用xib進(jìn)行界面的搭建
利用file’s owner進(jìn)行關(guān)聯(lián),形如storyBoard中的segue
18.如何在一個(gè)項(xiàng)目中使用多個(gè)storyBoard
19.如何利用代碼與storyBoard或者XIB進(jìn)行自動(dòng)布局
20、XIB進(jìn)行國(guó)際化
首先在工程中需要添加你想要使用的語(yǔ)言,然后新建視圖的時(shí)候選擇使用XIB,這樣xcode就會(huì)自動(dòng)為你新建一個(gè)xib文件,然后在inspector中的localization中選擇localized,開(kāi)始時(shí)一定要選擇base,然后勾選其他語(yǔ)言,這樣你發(fā)現(xiàn)XIB文件會(huì)有子目錄,然后在子目錄下你可以設(shè)置不同的語(yǔ)言翻譯。
21.tableView小技巧
根據(jù)設(shè)置不同的identifier取出不同類型的cell,在設(shè)置identifier的時(shí)候可以設(shè)置成類名,這樣的話就可以省很多事,而且很方便。
22. 技巧
[[UIApplication sharedApplication] setStatusBarHidden:YES];
23.版本控制
gitLab和sourceTree結(jié)合使用對(duì)源代碼進(jìn)行管理,如何進(jìn)行相關(guān)的配置
24.發(fā)送語(yǔ)音消息
三方庫(kù)opencore-amr
25.Sqlcipher+FMDB,數(shù)據(jù)庫(kù)文件加密
26.技巧
圖片瀏覽XHImageViewer
28.技巧
根據(jù)button的不同狀態(tài)可以設(shè)置button的事件,相當(dāng)于微信發(fā)送語(yǔ)音信息的按鈕,按住錄音,松開(kāi)結(jié)束錄音并發(fā)送消息,
29.技巧
把block指針變量設(shè)置成私有的,這樣是不是很好用。
30. 功能說(shuō)明
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(overtimeRemind) object:nil];
先看這段代碼:
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(showLeft) object:nil];
[self performSelector:@selector(showLeft)];
為什么[self performSelector:@selector(showLeft)];前面還需要調(diào)用cancelPreviousPerformRequestsWithTarget:self方法呢?
那是因?yàn)橛袝r(shí)候我們通過(guò)[self performSelector:@selector(showLeft)];來(lái)實(shí)現(xiàn)showLeft方法,可能會(huì)出現(xiàn)延遲執(zhí)行或內(nèi)存泄漏的問(wèn)題,而前面加上這句話:
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(showLeft) object:nil];
可以先將這在執(zhí)行的方法取消,在繼續(xù)執(zhí)行,有效避免了上述兩個(gè)問(wèn)題。