第一步:編程入門課

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供宜秀網(wǎng)站建設(shè)、宜秀做網(wǎng)站、宜秀網(wǎng)站設(shè)計(jì)、宜秀網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、宜秀企業(yè)網(wǎng)站模板建站服務(wù),10年宜秀做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
時(shí)間預(yù)計(jì):4個(gè)星期
推薦看公開課,Udacity也行,網(wǎng)易公開課也行,自己找一個(gè)面對(duì)對(duì)象語(yǔ)言(一般是JAVA, C++, Python)的課。我是在網(wǎng)易公開課看的斯坦福的CS106A,學(xué)的JAVA。
如果你純粹學(xué)iOS開發(fā),不推薦看哈佛CS50,CS50是給CS系的學(xué)生介紹整個(gè)計(jì)算機(jī)世界的框架,講的內(nèi)容比較多,進(jìn)度比較快,對(duì)iOS開發(fā)其實(shí)有點(diǎn)累贅了。(臣妾有點(diǎn)跟不上啊!!)
計(jì)劃安排是一天一課,看課程要求的書(至少看完一本)及大部分作業(yè)。這一階段重點(diǎn)不是語(yǔ)法,而是以下3個(gè)目標(biāo)。
目標(biāo):
1. 讓自己對(duì)編程這件事感到適應(yīng)。
寫hello world。
怎么寫function, 怎么調(diào)用function。
全局變量,局部變量這類基本知識(shí)點(diǎn)。
都是基本的東西。看看書,寫多兩個(gè)程序就歐啦。
2. 掌握編程語(yǔ)言的基本要素。
編程語(yǔ)言4個(gè)要素:
a. 基本的數(shù)據(jù)類型:整數(shù),實(shí)數(shù),character, string, boolean
b. 基本的運(yùn)算符號(hào):+-×/++--那啥的
c. 怎樣輸入輸出
d. 怎樣控制程序:sequence,selection,loop
3. 了解編程范式
面對(duì)過(guò)程編程。
面向?qū)ο缶幊獭?/p>
第二步:上手iOS!
時(shí)間預(yù)計(jì):2星期
強(qiáng)烈推薦CS193P,老頭子講的超級(jí)好!我的很多東西(對(duì)象思維啥的)是在這里跟著做練習(xí)的時(shí)候才真正明白的(好啦,也可能是上一堂課練習(xí)做得少的原因)。如果等到9月應(yīng)該itunes U上會(huì)開始教iOS 7了。網(wǎng)易公開課的是2010年iOS 5版的,前10堂課,也行。(iTunes U上有完整的課)
CS193P說(shuō)有prerequisite,一開始被嚇到,事實(shí)證明還是可以學(xué)下去的。頭兩節(jié)課一頭霧水,沒(méi)關(guān)系,把itunes U上的課件下載下來(lái),把所有代碼打出來(lái),然后一個(gè)個(gè)元素對(duì)應(yīng)之前學(xué)的語(yǔ)言匹配,再不懂先放著,繼續(xù)學(xué)后邊的,過(guò)幾天打多點(diǎn)代碼就懂了。
感覺(jué)學(xué)5、6堂課,一個(gè)星期左右就可以開始進(jìn)入下一階段自己做東西了。之后用啥學(xué)啥,每堂課都有主題的。速度慢點(diǎn)的同學(xué)們,這階段跟我一樣準(zhǔn)備兩個(gè)星期吧!
第三步:開發(fā)app!
時(shí)間預(yù)計(jì):2星期(本人...1個(gè)半月,實(shí)在不好意思說(shuō)出口)
這個(gè)時(shí)間就可長(zhǎng)可短啦,還包括美工,交互啥的。堅(jiān)持要用啥學(xué)啥的原則,其實(shí)就是知道iOS SDK都有什么組件,每個(gè)組件有什么function而已。stackoverflow, Github, apple sample code多上,搜索引擎多用。如果有個(gè)師傅,這個(gè)階段真的是進(jìn)步神速。
OSI 的七層協(xié)議體系結(jié)構(gòu)的概念清晰,理論完整,當(dāng)時(shí)它既復(fù)雜又不實(shí)用; TCP/IP 體系結(jié)構(gòu)則不同,但是它現(xiàn)在卻得到了非常廣泛的應(yīng)用,不過(guò)從實(shí)質(zhì)上講, TCP/IP 只是最上面的三層,因?yàn)樽钕旅娴木W(wǎng)絡(luò)接口層并沒(méi)有什么具體內(nèi)容;因此在學(xué)習(xí)計(jì)算機(jī)網(wǎng)絡(luò)的時(shí)候往往采取折中的方法,即綜合 OSI 和 TCP/IP 的優(yōu)點(diǎn),采用一種只有五層協(xié)議的體系結(jié)構(gòu);
iOS 開發(fā)中的網(wǎng)絡(luò)通信主要是在傳輸層和應(yīng)用層進(jìn)行一些網(wǎng)絡(luò) IP 地址,端口以及協(xié)議的一些處理;首先是網(wǎng)絡(luò)層的兩種傳輸協(xié)議 UDP 和 TCP 的含義以及區(qū)別:
用戶數(shù)據(jù)包協(xié)議;UDP 在傳輸數(shù)據(jù)之前不需要先建立連接.遠(yuǎn)地主機(jī)的運(yùn)輸層在收到 UDP 報(bào)文后,不需要給出任何確認(rèn);
主要特點(diǎn):
傳輸控制協(xié)議; TCP 提供面向連接的服務(wù);在傳輸數(shù)據(jù)之前必須先建立連接,數(shù)據(jù)傳輸完成后要釋放連接;建立連接需要通過(guò)三次握手,而釋放連接需要四次握手;
主要特點(diǎn):
第一次握手:客戶端發(fā)送syn包(seq=x)到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn);
第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的SYN(ack=x+1),同時(shí)自己也發(fā)送一個(gè)SYN包(seq=y),即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài);
第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=y+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),完成三次握手。
握手過(guò)程中傳送的包里不包含數(shù)據(jù),三次握手完畢后,客戶端與服務(wù)器才正式開始傳送數(shù)據(jù)。理想狀態(tài)下,TCP連接一旦建立,在通信雙方中的任何一方主動(dòng)關(guān)閉連接之前,TCP 連接都將被一直保持下去。
這個(gè)問(wèn)題的本質(zhì)就是信道不可靠,但是通信雙方需要中間傳輸?shù)臄?shù)據(jù)是可靠的,而要解決這個(gè)問(wèn)題,無(wú)論你是在信息中包含什么信息,三次通信是理論上的最小值,所以三次握手不是TCP本身的要求,而是為了滿足在不可靠信道上可靠的傳輸信息這一需求所致的;這里的本質(zhì)需求就是,信道不可靠,數(shù)據(jù)傳輸要可靠,三次握手之后你先繼續(xù)握手還是發(fā)數(shù)據(jù)也好,跟進(jìn)行可靠信息傳輸?shù)男枨缶蜎](méi)關(guān)系了,因此如果信道可靠,無(wú)論什么時(shí)候發(fā)出消息,對(duì)方一定能收到,或者你不關(guān)心是否要保證對(duì)方收到你的消息,那就能像UDP那樣直接發(fā)送消息就可以;
1.當(dāng)主機(jī)A確認(rèn)發(fā)送完數(shù)據(jù)且知道B已經(jīng)接受完了,想要關(guān)閉發(fā)送數(shù)據(jù)接口(當(dāng)然確認(rèn)信號(hào)還是可以發(fā)),就會(huì)發(fā)FIN給主機(jī)B;
2.主機(jī)B收到A發(fā)送的FIN,表示收到了,就會(huì)發(fā)送ACK回復(fù);
3.但是這時(shí)B可能還在發(fā)送數(shù)據(jù),沒(méi)有想要關(guān)閉數(shù)據(jù)口的意思,所以FIN和ACK不是同時(shí)發(fā)送的,而是等到B數(shù)據(jù)發(fā)送完,才會(huì)發(fā)送FIN給主機(jī)A;
4.A收到B發(fā)來(lái)的FIN,知道B的數(shù)據(jù)也發(fā)送完了,回復(fù)ACK,A等待2MSL以后,沒(méi)有收到B傳來(lái)的任何消息,知道B已經(jīng)收到自己的ACK了,A就關(guān)閉鏈接,B也關(guān)閉鏈接;
在客戶端發(fā)送最后的ACK回復(fù),但是該ACK可能丟失。服務(wù)端如果沒(méi)有收到ACK,將不斷重復(fù)發(fā)送FIN片段。所以客戶端不能立即關(guān)閉,它必須確認(rèn)服務(wù)端接收到了該ACK,客戶端會(huì)在發(fā)送出ACK之后進(jìn)入到TIME_WAIT狀態(tài),客戶端會(huì)設(shè)置一個(gè)計(jì)時(shí)器,等待2MSL的時(shí)間,如果在該時(shí)間內(nèi)再次收到FIN,那么客戶端會(huì)重發(fā)ACK并再次等待2MSL;所謂2MSL是兩倍的MSL(Maximum Segment Lifetime)。MSL指一個(gè)片段在網(wǎng)絡(luò)中最大的存活時(shí)間,2MSL就是一個(gè)發(fā)送和一個(gè)回復(fù)所需的最大時(shí)間。如果知道2MSL,客戶端都沒(méi)有再次收到FIN,那么客戶端推斷ACK已經(jīng)成功接收,則結(jié)束TCP連接;
HTTP是一種無(wú)狀態(tài)的連接,客戶端每次讀取web網(wǎng)頁(yè)時(shí),服務(wù)器都會(huì)認(rèn)為這是一次新的會(huì)話。但有時(shí)候我們需要持久保存一些用戶信息,比如登錄時(shí)的用戶名和密碼等;而這些信息都是需要Cookie和Session來(lái)保存;
這兩個(gè)的本質(zhì)區(qū)別就是Cookie是保存在客戶端的,而Session是保存在服務(wù)器上的;
當(dāng)服務(wù)器接收到 cookie 后,會(huì)根據(jù) cookie 中的 SessionID 來(lái)找到這個(gè)客戶的 session。如果沒(méi)有,則會(huì)生成一個(gè)新的 SessionID 發(fā)送給客戶端。
HTTP 連接使用的是"請(qǐng)求--響應(yīng)"的方式,不僅在請(qǐng)求時(shí)需要先建立連接,而且需要客戶端向服務(wù)器發(fā)出請(qǐng)求后,服務(wù)器端才能回復(fù)數(shù)據(jù);一次請(qǐng)求后立即斷開;HTTP 使用的的面向連接的 TCP 作為傳輸層協(xié)議,保證了數(shù)據(jù)的可靠性;但是 HTTP屬于無(wú)狀態(tài),無(wú)連接;雖然使用了 TCP 連接,但通信的雙方不需要先建立連接;
socket 連接通常情況下就是 TCP 連接,因此 socket 連接一旦建立,通信雙方即可開始互相發(fā)送數(shù)據(jù)內(nèi)容,直到雙方的連接斷開;但在實(shí)際應(yīng)用中,客戶端和服務(wù)器之間的通行防火墻會(huì)關(guān)閉長(zhǎng)時(shí)間處于非活躍狀態(tài)的連接而導(dǎo)致 socket 連接中斷,因此需要通過(guò)輪詢告訴網(wǎng)絡(luò)該連接處于活躍狀態(tài);
連接過(guò)程分為三個(gè)步驟:服務(wù)器監(jiān)聽(tīng),客戶端請(qǐng)求,連接確認(rèn);
服務(wù)器監(jiān)聽(tīng) :服務(wù)器端套接字并不定位具體的客戶端套接字,而是處于等待連接狀態(tài),實(shí)時(shí)監(jiān)測(cè)網(wǎng)絡(luò)狀態(tài),等待客戶端的連接請(qǐng)求;
客戶端的連接請(qǐng)求 :指客戶端的套接字提出連接請(qǐng)求,要連接的目標(biāo)是服務(wù)器端的套接字,為此客戶端的套接字必須首先描述它要連接的服務(wù)器的套接字,指出服務(wù)器端的套接字的地址和端口號(hào),然后就向服務(wù)器端套接字提出連接請(qǐng)求;
連接確認(rèn) :當(dāng)服務(wù)器端套接字監(jiān)聽(tīng)到或者說(shuō)收到客戶端套接字的連接請(qǐng)求時(shí),就響應(yīng)客戶端套接字的請(qǐng)求,建立一個(gè)新的線程,把服務(wù)器端套接字的描述發(fā)給客戶端,一旦客戶端確認(rèn)了此描述,雙方就正式建立連接,而服務(wù)器端的套接字繼續(xù)處于監(jiān)聽(tīng)狀態(tài),繼續(xù)接受其它客戶端套接字的連接請(qǐng)求;
HTTP的 URL 的一般形式是: ;主機(jī):端口/路徑
HTTP 的默認(rèn)端口號(hào)是:80;
HTTP 有兩類報(bào)文:
1.請(qǐng)求報(bào)文---從客戶端向服務(wù)器發(fā)送的請(qǐng)求報(bào)文
2.響應(yīng)報(bào)文---從服務(wù)器到客戶的回答
特點(diǎn):所有的請(qǐng)求參數(shù)都拼接都 URL 的后面;
缺點(diǎn):
特點(diǎn):
1xx 保留.響應(yīng)保留;
2xx 請(qǐng)求成功接收;
3xx 為完成請(qǐng)求客戶端需要進(jìn)一步細(xì)化請(qǐng)求;
4xx 客戶端請(qǐng)求錯(cuò)誤(參數(shù),方式不正確);
5xx 服務(wù)器端有錯(cuò)誤;
Swift是Apple在WWDC2014所發(fā)布的一門編程語(yǔ)言,可以用來(lái)編寫iOS應(yīng)用程序。在設(shè)計(jì)Swift時(shí).就有意和Objective-C共存。蘋果宣稱Swift的特點(diǎn)是:快速、現(xiàn)代、安全、互動(dòng),且全面優(yōu)于Objective-C語(yǔ)言。2015年06月09日,蘋果通過(guò)WWDC大會(huì)上宣布Swift開源。這意味著可以用它來(lái)進(jìn)行開發(fā)跨平臺(tái)的應(yīng)用。現(xiàn)在已經(jīng)有人使用Swift來(lái)開發(fā)服務(wù)端程序了。這些看上去都十分美好。但是Swift經(jīng)歷的時(shí)間畢竟太短,版本變化太快,甚至于1.0,2.0簡(jiǎn)直就是2個(gè)語(yǔ)言。何況很多公司的項(xiàng)目都是Objective-C進(jìn)行編寫的,要想一下子轉(zhuǎn)成Swift進(jìn)行開發(fā)還是有較大的難度的。所以本課程會(huì)以O(shè)bjective-C為主要語(yǔ)言。在課程技術(shù)的時(shí)候補(bǔ)充下Swift語(yǔ)言語(yǔ)法。學(xué)一門編程語(yǔ)言其實(shí)難度不大,難得是需要去學(xué)習(xí)框架,了解框架,這些都需要花大量的時(shí)間。一旦我們學(xué)會(huì)了UIKit等框架之后用Swift編寫App是很容易上手的。希望能幫到你,歐克
iOS開發(fā)包含的內(nèi)容有:語(yǔ)言:objective-c,swift,設(shè)計(jì)模式:mvc,數(shù)據(jù)庫(kù):sqlite coredata(一套api),操作系統(tǒng):mac庫(kù):太多了,ASI,AFN,F(xiàn)MDB這種大多數(shù)都會(huì)用到 github一搜一大把,很多不用自己寫,多人協(xié)作:svn,git,經(jīng)常要用github git是必須會(huì)的,其他通用知識(shí):http,socket等等,至于工具,一上來(lái)整這么多沒(méi)意義,你得會(huì)做點(diǎn)東西才用得上工具是不是。有需求就會(huì)去分析去找解決方案。比如你發(fā)現(xiàn)xcode的文件結(jié)構(gòu)是虛擬的,建了文件夾磁盤上沒(méi)有,很不好管理,那你就會(huì)去找解決方法,然后發(fā)現(xiàn)synx就可以解決這個(gè)問(wèn)題。工具是這樣搜索,用起來(lái)的。iOS開發(fā)者有價(jià)值的工具集 前人也是總結(jié)了不少。然后一般寫iOS的UI有三種方式。xib,Storyboard以及代碼創(chuàng)建。我覺(jué)得代碼是效率最高也最厲害的;關(guān)于iPad和iPhone如果要適配的話是不大好的,最好設(shè)計(jì)兩種UI。不同意,代碼確實(shí)是最厲害的,但不是效率最高的,對(duì)個(gè)人而言,autolayout sizeclass絕對(duì)是storyboard更有效率,點(diǎn)兩下的事情代碼幾十行(當(dāng)然基本都是自動(dòng)補(bǔ)全,我還是嫌多),適配問(wèn)題有了sizeclass也只需要一套UI了。但為什么說(shuō)個(gè)人而言,因?yàn)槠髽I(yè)一般因?yàn)閳F(tuán)隊(duì)協(xié)作問(wèn)題不喜歡用storyboard,容易發(fā)生沖突,所以代碼,IB都得會(huì),什么適合用什么。
文章名稱:ios開發(fā)概述,ios基于什么開發(fā)
文章出自:http://chinadenli.net/article43/dsshhhs.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、搜索引擎優(yōu)化、靜態(tài)網(wǎng)站、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)