第一步:編程入門課
創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設計制作、成都做網(wǎng)站,集網(wǎng)站策劃、網(wǎng)站設計、網(wǎng)站制作于一體,網(wǎng)站seo、網(wǎng)站優(yōu)化、網(wǎng)站營銷、軟文平臺等專業(yè)人才根據(jù)搜索規(guī)律編程設計,讓網(wǎng)站在運行后,在搜索中有好的表現(xiàn),專業(yè)設計制作為您帶來效益的網(wǎng)站!讓網(wǎng)站建設為您創(chuàng)造效益。
時間預計:4個星期
推薦看公開課,Udacity也行,網(wǎng)易公開課也行,自己找一個面對對象語言(一般是JAVA, C++, Python)的課。我是在網(wǎng)易公開課看的斯坦福的CS106A,學的JAVA。
如果你純粹學iOS開發(fā),不推薦看哈佛CS50,CS50是給CS系的學生介紹整個計算機世界的框架,講的內(nèi)容比較多,進度比較快,對iOS開發(fā)其實有點累贅了。(臣妾有點跟不上?。。。?/p>
計劃安排是一天一課,看課程要求的書(至少看完一本)及大部分作業(yè)。這一階段重點不是語法,而是以下3個目標。
目標:
1. 讓自己對編程這件事感到適應。
寫hello world。
怎么寫function, 怎么調(diào)用function。
全局變量,局部變量這類基本知識點。
都是基本的東西??纯磿瑢懚鄡蓚€程序就歐啦。
2. 掌握編程語言的基本要素。
編程語言4個要素:
a. 基本的數(shù)據(jù)類型:整數(shù),實數(shù),character, string, boolean
b. 基本的運算符號:+-×/++--那啥的
c. 怎樣輸入輸出
d. 怎樣控制程序:sequence,selection,loop
3. 了解編程范式
面對過程編程。
面向?qū)ο缶幊獭?/p>
第二步:上手iOS!
時間預計:2星期
強烈推薦CS193P,老頭子講的超級好!我的很多東西(對象思維啥的)是在這里跟著做練習的時候才真正明白的(好啦,也可能是上一堂課練習做得少的原因)。如果等到9月應該itunes U上會開始教iOS 7了。網(wǎng)易公開課的是2010年iOS 5版的,前10堂課,也行。(iTunes U上有完整的課)
CS193P說有prerequisite,一開始被嚇到,事實證明還是可以學下去的。頭兩節(jié)課一頭霧水,沒關(guān)系,把itunes U上的課件下載下來,把所有代碼打出來,然后一個個元素對應之前學的語言匹配,再不懂先放著,繼續(xù)學后邊的,過幾天打多點代碼就懂了。
感覺學5、6堂課,一個星期左右就可以開始進入下一階段自己做東西了。之后用啥學啥,每堂課都有主題的。速度慢點的同學們,這階段跟我一樣準備兩個星期吧!
第三步:開發(fā)app!
時間預計:2星期(本人...1個半月,實在不好意思說出口)
這個時間就可長可短啦,還包括美工,交互啥的。堅持要用啥學啥的原則,其實就是知道iOS SDK都有什么組件,每個組件有什么function而已。stackoverflow, Github, apple sample code多上,搜索引擎多用。如果有個師傅,這個階段真的是進步神速。
好的!不出意外,你的第一個app就這么新鮮出爐了!從今天開始,成為一個冷艷逼格高尚的iOS開發(fā)者吧!
基礎(chǔ)是要過關(guān)的,oop、多線程、db、基本算法或數(shù)據(jù)結(jié)構(gòu)是必須的。
還要熟練掌握Objective-C語言,C/C++語言;3.熟悉Cocoa開發(fā)框架,包括UI、網(wǎng)絡等方面,熟悉IOS開發(fā)工具和相關(guān)開發(fā)測試工具的使用,掌握常用的數(shù)據(jù)結(jié)構(gòu)與常用算法,較好的邏輯思維分析和表達和溝通能力,要有一定的自學能力,較強的團隊協(xié)作意識。
更多關(guān)于ios游戲開發(fā)需要哪些知識,進入:查看更多內(nèi)容
篇一:分享簡單學習iOS開發(fā)的方法
隨著3G技術(shù)的普及與智能終端的快速發(fā)展,逐漸的移動開發(fā)者最受企業(yè)的歡迎,特別是iOS軟件開發(fā)人才更是得到了企業(yè)的青睞,從現(xiàn)在情況來看,iOS培訓和iOS軟件開發(fā)人才有些嚴重供不應求。
容易上手的,學習iOS要注意到每個細節(jié),因為每個細小的知識都有可能改變這個程序,如果有一點的錯誤都會導致整個程序無法運行,其實學習iOS和上學學習一樣,都是從最基礎(chǔ)的開始學起,慢慢的積累知識。如果想學好iOS,現(xiàn)在單單在網(wǎng)上學習是有點out了,可以選擇零學費,就能夠入學的培訓學校學習一下,如果沒有合適的話,可以了解一下培訓機構(gòu),找一個口碑不錯的,這樣結(jié)合理論和實際才能夠?qū)W好iOS。
在課前一定要做好準備資料及準備內(nèi)容,要知道老師要講什么?先做好預習,這樣有準備的上戰(zhàn)場才會學得更好,在課堂上認真聽老師講課,在電腦上操作老師所講的內(nèi)容,如果有不懂的一定要及時向講師問清是怎么回事,課后多做幾次練習,那么就不是問題了。3
如果聽不懂怎么辦?
這些現(xiàn)象很正常,誰也不敢保證講師所講的知識都能夠無一不漏的聽明白,能夠在電腦上操作出來,那么如果遇到不懂得就要直接問,還可以先預習今后再去學習理論課的時分就能夠有對于性的去聽了,教師講到你現(xiàn)已把握的內(nèi)容時,你能夠注意聽一下講師是不是有了新的見解及創(chuàng)新的認識、講的和你了解到的是不是一樣,如果不太一樣的話,那么就要做下記號,課下與老師溝通,承認這個
常識點的真實意義;若是講到你預習時不會的常識點的話,你更大概仔細的去聽了,認真的去了解一下到底是怎么個意思?
篇二:如何快速學會ios開發(fā)
針對學習iOS開發(fā)怎么樣?想學iOS開發(fā)如何才能快速學習?沒有基礎(chǔ)怎么快速學習iOS開發(fā)等問題,藍鷗iOS培訓專業(yè)老師指點明燈!看著身邊學iOS開發(fā)的人拿了高工資,很多人按捺不住了。但菜鳥真的也可以成為iOS開發(fā)軟件工程師嗎?只要有恰當?shù)膶W習方法,學習軟件開發(fā)并不難。對于軟件初學者來說,主要做到以下幾點:
一、打好基礎(chǔ),不能一步登天
學習iOS,首先要學習C語言,很多人跳過C,直接學Objective-C,這是極不可取的。Objective-C是C的超集,必須有C的基礎(chǔ),學習才能更好更快的進行。不要一開始就盲目崇拜別人的大項目,要從小項目開始,一步一個腳印,遇到困難不要退縮,解決困難也是學習的過程。
二、必須如蜜蜂,多方采集花蜜
在學習初期對于iOS沒有概念,最好的辦法就是多看別人的代碼,多吸取別人的養(yǎng)分。遇到不懂得問題不要跳過,而是要多問,多向人請教,學習別人的思路,吸取有益的知識,并做好學習筆記。積少成多,會成為你不小的財富。
三、勤動腦,多動手,有創(chuàng)新精神
軟件開發(fā)者是為了讓軟件實現(xiàn)更豐富更強大的功能,必須有很強的實際操作能力。作為iOS開發(fā)工程師,不但要了解用戶需要哪些功能,有哪些需求,還要多動腦,開發(fā)出符合市場以及時代需求的項目。這都需要軟件開發(fā)者具備很好創(chuàng)新精神。
由此可見,學習iOS開發(fā),只要肯吃苦,有恒心,菜鳥也可以有很藍,很廣闊的天空。iOS培訓很注重基礎(chǔ)教學,教學方式與大學不同,在教授理論知識的同時,更注重實踐技能的培養(yǎng)。擺正心態(tài),切勿操之過急,囫圇吞棗,將每天所學定義為就是今后工作要用的,這樣你便會認真對待每一次學習、每一行代碼和遇到的每一個難題。
參加iOS開發(fā)培訓也可以,現(xiàn)在iOS開發(fā)培訓大概也就4個月時間,花一兩萬系統(tǒng)學4個月也是一個不錯的選擇,雖然要一兩萬,但是效果跟自己學肯定是不一樣的,要是自己學跟有老師帶著學一樣,那這個世界上將沒有學校存在了。對于參加iOS開發(fā)培訓的一定
要選對機構(gòu),有句話說得好,選對比選好有時候重要太多。你考30分的'成績讓你去北大清華也不一定能夠成就了呢,所以選擇口碑好的機構(gòu),專注iOS開發(fā)的機構(gòu)比較好,畢竟咱基礎(chǔ)不好,那些機構(gòu)做雜很難做精。不管是快速學還是慢慢自學還是選擇iOS培訓機構(gòu)系統(tǒng)培訓,只要你投入進去就好,堅持下去一定會有大收獲。不管做什么或者學什么一定要避免三天打魚兩天曬網(wǎng),這樣效果不會明顯。
篇三:零基礎(chǔ)學iOS開發(fā)的方法
怎么學習iOS開發(fā),尤其是對于沒有基礎(chǔ)的,甚至是0基礎(chǔ)的朋友而言,要學習iOS開發(fā)就需要注重方法了。由于iphone手機帶來的手機應用狂潮,現(xiàn)在很多人都希望從事這塊的開發(fā)。很多初學者可能會問,沒有基礎(chǔ)怎么樣才能學好iOS開發(fā),我們要看什么書呢,還是什么視頻,其實這些都不是重要的,重要的是,你認為自己可以學好iOS開發(fā),認為自己可以堅持下來,這是關(guān)鍵啦。
其實學很多語言都是通的,即使0基礎(chǔ)學習也不怕,從C語言入門,因為iOS開發(fā)用的是OC語言,是在C基礎(chǔ)上的,不過也跟C不是很搭界,你可以直接學習OC語言也可以,還有開發(fā)工具是用Xcode,是在Mac系統(tǒng)的,你多摸索一下就可以開發(fā)簡單的應用了,建議你買一本iphone開發(fā)秘籍第二版看看。學語言,無非就是要學好基礎(chǔ),弄清楚概念,然后做個簡單的例子,慢慢的體會,基礎(chǔ)打好了,到后面你會覺得突然自己提高了很多,很多東西都自然而然地明白了,在黑暗中的努力是為了迎接光明。
我覺得學iOS開發(fā),首先心態(tài)要好,不要想著我已經(jīng)學習很長時間了,可以找個好工作,可以賺錢了,牛人除外,不過大多都是普通人。
先慢慢培養(yǎng)興趣下定決心,然后開始找資料,找視頻,查百度。等你覺得這些基礎(chǔ)的都差不多理解了,那就別看書,將精力集中于界面開發(fā)、一定的數(shù)據(jù)庫開發(fā)、通訊接口開發(fā)、協(xié)同開發(fā)與聯(lián)調(diào)。然后自己設計個東西,可以涵蓋他們的,做個自己想做的東西出來,雖然可能很難,但是你會在過程中學到很多,是別人教不會你的。
在學習過程中遇到什么問題,你可以百度一下看看別人的回答,看多了印象就深了,也就慢慢掌握了。遇到什么思路上的問題,可以來藍鷗網(wǎng)站技術(shù)論壇發(fā)帖,論壇肯定會有人來幫忙的,就算不能完全解決,也可以提供點參考。學習要會利用資源,論壇上那么好的資源不用可惜的哦,還有資料堆的東西,只要你能掌握70%,不相信你可以試試。
Runtime是iOS核心運行機制之一,iOS App加載庫、加載類、執(zhí)行方法調(diào)用,全靠Runtime,這一塊的知識個人認為是最基礎(chǔ)的,基本面試必問。
1)iOS調(diào)用一個方法時,實際上會調(diào)用objc_msgSend(receiver, selector, arg1, arg2, ...),該方法第一個參數(shù)是消息接收者,第二個參數(shù)是方法名,剩下的參數(shù)是方法參數(shù);
2)iOS調(diào)用一個方法時,會先去該類的方法緩存列表里面查找是否有該方法,如果有直接調(diào)用,否則走第3)步;
3)去該類的方法列表里面找,找到直接調(diào)用,把方法加入緩存列表;否則走第4)步;
4)沿著該類的繼承鏈繼續(xù)查找,找到直接調(diào)用,把方法加入緩存列表;否則消息轉(zhuǎn)發(fā)流程;
很多面試者大體知道這個流程,但是有關(guān)細節(jié)不是特別清楚。
如果在消息發(fā)送階段沒有找到方法,iOS會走消息轉(zhuǎn)發(fā)流程,流程圖如下所示:
1)動態(tài)消息解析。檢查是否重寫了resolveInstanceMethod 方法,如果返回YES則可以通過class_addMethod 動態(tài)添加方法來處理消息,否則走第2)步;
2)消息target轉(zhuǎn)發(fā)。forwardingTargetForSelector 用于指定哪個對象來響應消息。如果返回nil 則走第3)步;
3)消息轉(zhuǎn)發(fā)。這步調(diào)用 methodSignatureForSelector 進行方法簽名,這可以將函數(shù)的參數(shù)類型和返回值封裝。如果返回 nil 執(zhí)行第四步;否則返回 methodSignature,則進入 forwardInvocation ,在這里可以修改實現(xiàn)方法,修改響應對象等,如果方法調(diào)用成功,則結(jié)束。否則執(zhí)行第4)步;
4)報錯 unrecognized selector sent to instance。
很多人知道這四步,但是筆者一般會問:
+load在main函數(shù)之前被Runtime調(diào)用,+initialize 方法是在類或它的子類收到第一條消息之前被調(diào)用的,這里所指的消息包括實例方法和類方法的調(diào)用。
筆者在面試過程中發(fā)現(xiàn)很多人對于load與initialize在分類、繼承鏈的調(diào)用順序不清楚。對怎么保證初始化安全也不清楚
RunLoop蘋果原理圖
圖中展現(xiàn)了 Runloop 在線程中的作用:從 input source 和 timer source 接受事件,然后在線程中處理事件。
兩個都是 Runloop 事件的來源,其中 Input Source 又可以分為三類
因為定時器默認是運行在NSDefaultRunLoopMode,在列表滾動時候,主線程會切換到UITrackingRunLoopMode,導致定時器回調(diào)得不到執(zhí)行。
有兩種解決方案:
iOS 檢測到手指觸摸 (Touch) 操作時會將其打包成一個 UIEvent 對象,并放入當前活動Application的事件隊列,UIApplication 會從事件隊列中取出觸摸事件并傳遞給單例的 UIWindow 來處理,UIWindow 對象首先會使用 hitTest:withEvent:方法尋找此次Touch操作初始點所在的視圖(View),即需要將觸摸事件傳遞給其處理的視圖,這個過程稱之為 hit-test view。
hitTest:withEvent:方法的處理流程如下:
iOS的事件分發(fā)機制是為了找到第一響應者,事件的處理機制叫做響應者鏈原理。
所有事件響應的類都是 UIResponder 的子類,響應者鏈是一個由不同對象組成的層次結(jié)構(gòu),其中的每個對象將依次獲得響應事件消息的機會。當發(fā)生事件時,事件首先被發(fā)送給第一響應者,第一響應者往往是事件發(fā)生的視圖,也就是用戶觸摸屏幕的地方。事件將沿著響應者鏈一直向下傳遞,直到被接受并做出處理。一般來說,第一響應者是個視圖對象或者其子類對象,當其被觸摸后事件被交由它處理,如果它不處理,就傳遞給它的父視圖(superview)對象(如果存在)處理,如果沒有父視圖,事件就會被傳遞給它的視圖控制器對象 ViewController(如果存在),接下來會沿著頂層視圖(top view)到窗口(UIWindow 對象)再到程序(UIApplication 對象)。如果整個過程都沒有響應這個事件,該事件就被丟棄。一般情況下,在響應者鏈中只要由對象處理事件,事件就停止傳遞。
一個典型的事件響應路線如下:
First Responser -- 父視圖--The Window -- The Application -- nil(丟棄)
我們可以通過 [responder nextResponder] 找到當前 responder 的下一個 responder,持續(xù)這個過程到最后會找到 UIApplication 對象。
1) 在VC的cellForRowAtIndexPath方法中cell的block直接引用self或者直接以_形式引用屬性造成循環(huán)引用。
解決方案:把self改成weakSelf;
2)在cell的block中直接引用VC的成員變量造成循環(huán)引用。
解決方案有兩種:
3)delegate屬性聲明為strong,造成循環(huán)引用。
解決方案:delegate聲明為weak
4)在block里面調(diào)用super,造成循環(huán)引用。
解決方案,封裝goback調(diào)用
5)block聲明為strong
解決方案:聲明為copy
6)NSTimer使用后不invalidate造成循環(huán)引用。
解決方案:
考察viewDidLoad、viewWillAppear、ViewDidAppear等方法的執(zhí)行順序。
假設現(xiàn)在有一個 AViewController(簡稱 Avc) 和 BViewController (簡稱 Bvc),通過 navigationController 的push 實現(xiàn) Avc 到 Bvc 的跳轉(zhuǎn),調(diào)用順序如下:
1、A viewDidLoad
2、A viewWillAppear
3、A viewDidAppear
4、B viewDidLoad
5、A viewWillDisappear
6、B viewWillAppear
7、A viewDidDisappear
8、B viewDidAppear
如果再從 Bvc 跳回 Avc,調(diào)用順序如下:
1、B viewWillDisappear
2、A viewWillAppear
3、B viewDidDisappear
4、A viewDidAppear
如果你正在跳槽或者正準備跳槽不妨動動小手,添加一下咱們的交流群 931542608 來獲取一份詳細的大廠面試資料為你的跳槽多添一份保障。