iOS學(xué)習(xí)知識(shí)小結(jié)
iOS學(xué)習(xí)知識(shí)小結(jié)
在學(xué)習(xí)iOS的過程中,總會(huì)遇到不少問題,下面學(xué)習(xí)啦小編整理了關(guān)于iOS學(xué)習(xí)問題的總結(jié)
iOS學(xué)習(xí)小結(jié)
1.關(guān)聯(lián)
objc_setAssociatedObject關(guān)聯(lián)是指把兩個(gè)對(duì)象相互關(guān)聯(lián)起來,使得其中的一個(gè)對(duì)象作為另外一個(gè)對(duì)象的一部分。
2.tableView的beginUpdates 和 endUpdates
3.關(guān)于代碼與storyBoard的自動(dòng)布局
4.國際化與本地化,為了實(shí)現(xiàn)全球化
5.技巧
可以通過設(shè)置Scheme來設(shè)置app所運(yùn)行的語言,你想要什么語言就是什么語言,而不用重新設(shè)置系統(tǒng)的語言。
6.ios8新特性,加載js
如果我想要加載一個(gè)形如網(wǎng)頁的東西,那么我需要對(duì)整個(gè)網(wǎng)頁進(jìn)行動(dòng)態(tài)的編輯,圖文混編,但是這樣做那面會(huì)帶來很困難的操作,其實(shí)服務(wù)端那邊很好的可以解決這個(gè)問題,用一個(gè)網(wǎng)頁即可以搞定。服務(wù)端那邊只需返回一個(gè)html文檔,然后客戶端根據(jù)這個(gè)html文檔進(jìn)行解析即可。
WKWebView新特性
· 在性能、穩(wěn)定性、功能方面有很大提升(最直觀的體現(xiàn)就是加載網(wǎng)頁是占用的內(nèi)存,模擬器加載百度與開源中國網(wǎng)站時(shí),WKWebView占用23M,而UIWebView占用85M);
· 允許JavaScript的Nitro庫加載并使用(UIWebView中限制);
· 支持了更多的HTML5特性;
· 高達(dá)60fps的滾動(dòng)刷新率以及內(nèi)置手勢(shì);
· 將UIWebViewDelegate與UIWebView重構(gòu)成了14類與3個(gè)協(xié)議
7.技巧
寫 函數(shù)的時(shí)候一定要判斷數(shù)據(jù)的安全性,這樣出錯(cuò)的幾率就會(huì)很小,尤其是要判斷它的類型安全,是否為空等,不然程序會(huì)奔潰。還有需要注意的地方就是,寫每一個(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)購買
9.利用sqlite創(chuàng)建索引,索引是關(guān)系數(shù)據(jù)庫中用于存放每一條記錄的一種對(duì)象,主要目的是加快數(shù)據(jù)的讀取速度和完整性檢查。索引是對(duì)數(shù)據(jù)庫表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu),使用索引可快速訪問數(shù)據(jù)庫表中的特定信息。
10.數(shù)據(jù)庫版本的更新,當(dāng)應(yīng)用數(shù)據(jù)表需要添加新表的時(shí)候,需要對(duì)數(shù)據(jù)插入新的字段,那么久需要更新數(shù)據(jù)庫
11.友盟統(tǒng)計(jì),當(dāng)應(yīng)用上線后可以觀察到應(yīng)用的日志文件,crash日志,頁面記時(shí)日志,收集并歸類崩潰日志,提供錯(cuò)誤管理及分析工具,幫助開發(fā)者更好的解決問題,從而提高應(yīng)用的穩(wěn)定性,改善應(yīng)用質(zhì)量。
12.使用js的時(shí)候需要使用webView
[webView stringByEvaluatingJavaScriptFromString:scriptString];
13.做常用設(shè)備登陸的策略可以使用服務(wù)器,服務(wù)器把所有登陸過的設(shè)備都存儲(chǔ)下來。
14.涉及到系統(tǒng)偏好設(shè)置的選項(xiàng),把它都放到一個(gè)文件中,這樣修改起來比較容易。
15.利用VVDocumenter-Xcode自動(dòng)生成注釋,也就是xcode的插件.運(yùn)行VVDOcumenter-Xcode編譯后,重新打開xcode即可以使用了
16.如何使用xib進(jìn)行界面的搭建,利用file’s owner進(jìn)行關(guān)聯(lián),形如storyBoard中的segue
17.如何在一個(gè)項(xiàng)目中使用多個(gè)storyBoard
18.如何利用代碼與storyBoard或者XIB進(jìn)行自動(dòng)布局
19、XIB進(jìn)行國際化
首先在工程中需要添加你想要使用的語言,然后新建視圖的時(shí)候選擇使用XIB,這樣xcode就會(huì)自動(dòng)為你新建一個(gè)xib文件,然后在inspector中的localization中選擇localized,開始時(shí)一定要選擇base,然后勾選其他語言,這樣你發(fā)現(xiàn)XIB文件會(huì)有子目錄,然后在子目錄下你可以設(shè)置不同的語言翻譯。
20.tableView小技巧
根據(jù)設(shè)置不同的identifier取出不同類型的cell,在設(shè)置identifier的時(shí)候可以設(shè)置成類名,這樣的話就可以省很多事,而且很方便。
21. 技巧
[[UIApplication sharedApplication] setStatusBarHidden:YES];
22.版本控制
gitLab和sourceTree結(jié)合使用對(duì)源代碼進(jìn)行管理,如何進(jìn)行相關(guān)的配置
23.發(fā)送語音消息
三方庫opencore-amr
24.Sqlcipher+FMDB,數(shù)據(jù)庫文件加密
https://www.zetetic.net/sqlcipher/ios-tutorial/
25.技巧
圖片瀏覽XHImageViewer
26.技巧
根據(jù)button的不同狀態(tài)可以設(shè)置button的事件,相當(dāng)于微信發(fā)送語音信息的按鈕,按住錄音,松開結(jié)束錄音并發(fā)送消息,
27.技巧
把block指針變量設(shè)置成私有的,這樣是不是很好用。
28.關(guān)于runloop的一些了解,runloop是一種運(yùn)行池,是和多線程有關(guān)的東西,監(jiān)聽事件的產(chǎn)生,如果有新事件,那么runloop會(huì)監(jiān)聽,一旦監(jiān)聽到了,就會(huì)執(zhí)行監(jiān)聽到的方法。
29.技巧
關(guān)于用戶頭像的問題,點(diǎn)擊放大,等其他手勢(shì)的庫ESImageViewController
30.技巧
NSString *pullSuccessIdString = [pullSuccessMsgIds componentsJoinedByString:@","];
把數(shù)組中的每個(gè)元素用逗號(hào)拼接成一個(gè)字符串
31.數(shù)據(jù)共享
Multipeer Connectivity Framework ,近距離通信,雙方建立連接后可以彼此進(jìn)行通信
32.問題
oc中不支持多繼承,也就說一個(gè)類只能繼承至一個(gè)類,不能繼承多個(gè)類。實(shí)現(xiàn)多繼承可以使用協(xié)議來實(shí)現(xiàn),也就說某個(gè)類中可以繼承多個(gè)協(xié)議,這久相當(dāng)于多繼承,我可以擁有很多協(xié)議并且實(shí)現(xiàn)它。
33.multipeerConnectivity的實(shí)現(xiàn),對(duì)文件進(jìn)行共享
34.indexPathForSelectedRow
35如何給另一臺(tái)電腦進(jìn)行真機(jī)調(diào)試
《1》導(dǎo)出p12文件
《2》導(dǎo)出描述文件
《3》在另一臺(tái)電腦上雙擊即可以安裝了