一.項目認知
1.項目是指一系列獨特的,復雜的並相互關聯的活動,這些活動有着一個明確的目標或目的,必須在特定的時間,預算,資源限定內,依據規范完成。
2.比如蓋一棟大樓就是一個目標,它會有很多的活動:分析人流量選地方,設計圖紙,蓋樓,驗收等等。通過這些活動最終完成一棟大樓就是一個項目。
產品:
1.是指能夠提供給市場,被人們使用和消費,並能滿足人們某種需求的任何東西,包括有形的物品,無形的服務,組織,觀念或他們的組合。
二.項目角色
1.項目組是指為了完成某個特定的任務而把一群不同背景,不同技能和來自不同部門的人組織在一起的組織形式。
eg:技術調研組,電影攝影組
2.軟件開發項目組的架構分為:項目經理,產品組,研發組和測試組,每個組又會有各個不同的角色。
項目組工作流程:
1.在軟件項目開發中,各成員會按照一定的流程來進行各自的工作。
2.首先會由項目經理立頂發起項目
3.產品經理根據需求來設計產品功能
4.UE(交互設計師)根據產品功能來設計用戶功能交互
5.UI(視覺設計師)根據功能和交互來設計視覺稿
6.開發工程師根據視覺稿和功能需求來完成軟件的開發
7.測試工程師按照需求文檔對可運行的軟件進行測試
8.經項目經理確認通過之后,項目可以提交上線
三.思維導圖
1.思維導圖又叫心智圖,是表達發射思維的有效的圖形思維工具,它簡單卻又極其有效,是一種革命性的思維工具。
2.思維導圖運用圖文並重的技巧,把各級主題的關系用相互隸屬與相關的層級表現出來,把主題關鍵詞與圖像,顏色等建立記憶鏈接起來。
3.在項目分析中使用思維導圖,可以幫助我們更好的去分析項目功能,使得項目能更加清晰和具有條理性。
4.百度腦圖是一看在線思維導圖編輯器,使用現代瀏覽器打開使用。
四.接口文檔
1.一般我們在做應用的時候,客戶端都需要跟服務器端進行通信,將數據從客戶端傳到服務器上,從服務器上將數據獲取下來展示在客戶端頁面上。
2.我們在做數據上傳和數據請求這部分功能的時候,都需要通過請求相對應的后台接口,傳遞正確的參數之后才能完成。這些接口和參數都是事先規定好的,並且詳細的記錄在一個文檔中,這個文檔就叫做接口文檔。
3.接口文檔就相當於一個協議,當規定好了之后,客戶端開發人員和后台開發人員都必須遵守這個協議。如果需要修改,雙方開發人員都必須同意之后才能修改。
4.接口文檔的編寫主要包括5部分:接口的功能,接口地址,請求的方式,請求參數,返回值,有些接口文檔中還會包含請求示例和返回值示例,實際上這兩個部分也是很有用的,他可以很方便的幫助開發人員快速理解接口。
五.實體文件夾創建
1.方便我們對類文件的管理,如果不創建文件夾,所有的類文件都會在xcode的文件列表中顯示,沒有一個層級關系;當查閱文件時會非常麻煩。
2.我們可以在xcode中創建虛擬文件夾來對文件進行管理,但是這些文件夾只會在xcode中顯示,工程文件夾中是不存在的,所以本地工程文件夾中的文件依然是沒有層級關系的,都在同一個文件夾中。
3.如果我們在用git或svn對工程進行上傳時這些虛擬文件夾是上傳不到服務器上的。
1.在創建實體文件夾時,一定要使用有意義的名字來表示文件夾的功能。文件夾的名字不要使用中文命名,程序在編譯文件路徑時非常容易出錯。
2.文件夾的目錄結構,示例如下:
(1).Document ------文檔所在路徑
(2).Images ----圖片等資源要放在單獨的目錄或組中,但是在Xcode5.0之后提供IMages.xcassets文件夾存放圖片(僅限png,其他格式圖片自己創建文件夾),這種方式更方便了對圖片的管理
(3).Tools ---自定義的工具類(網絡請求,數據庫類等),公共頭文件(宏,接口的url,常量const{通知中心的名字,狀態碼,枚舉,結構體等},全局配置文件(屏幕適配,系統sdk適配,顏色值,圖片名字等))
(4).Base文件夾 -----自定義的父類
(5).某個單獨的功能。例如:應用了第三方的json下載的功能,應該把所有的文件放在單獨的JSon組中。現在xcode中管理第三方最方便的方法是使用CocoaPods。
(6).models,Views或ViewControllers等文件可以按照功能或文件類型放在獨立的組中。
六.MVC架構分析
MVC全名是Model View Controller,是模型(model)--視圖(view)--控制器(controller)的縮寫,一種軟件設計典范,用一種業務邏輯,數據,界面顯示分離的方法來組織代碼。
1.model(模型),存儲,處理數據,為應用程序提供數據。一般我們會將數據模型類和對數據的處理類放到M層。例如:通訊錄項目中的聯系人類,項目中封裝的數據請求類等等。
2.view(視圖),展示用戶界面,提供用戶交互,展示模型提供的數據。例如系統提供的視圖類UIView,UITableView等地屬於V層。在項目中我們自定義的控件,例如自定義cell等。
3.controller(控制器),控制器視圖的展示和處理用戶的交互,從模型獲取數據展示在視圖上。目的是解除模型與視圖之間的耦合。在iOS開發中幾乎所有的UIViewController及其子類都是屬於c層的。
MVC的優點:
1.耦合性低,視圖層,數據層和業務層分離,這樣就在更改視圖層代碼的時候就不用去處理模型和控制器代碼。
2.重用性高,在項目中我們會經常請求網絡數據,如果把網絡請求封裝在M層中,那么在視圖層中就不用再去寫相同的請求網絡的代碼,而是直接使用。
3.可維護性高,將代碼進行分離之后,如果想要修改或添加功能,就可以直接到某一層中去找相應的代碼然后進行調整,大大降低了程序員的維護成本。
4.部署快,使用MVC框架之后,開發時間也會得到縮減,做業務的程序員可以集中精力在業務邏輯上,做頁面開發的程序員就可以把主要精力放在頁面的開發上。
原理:
1.在MVC框架的設計中,C層可以直接控制V層和M層。但是V層和M層不能與C層進行直接通信。
2.M層向C層發起通信的常用方式有通知和KVO兩種方式。就是當M層發生變化時可以通過這兩種方式來通知C層,以便C層做相應的處理。
3.V層向C層發起通信的常用方式有delegate,dataSource和Target-action等。
4.在MVC框架設計中,V和M不能直接通信,只能通過C間接通信。
七.抽屜效果的實現機制
1.在APP中常常會有很多的功能模塊,這些功能模塊都有一個主入口。這些功能的入口我們把它叫做菜單欄,可以從菜單中選擇不同的功能。
2.在iOS中通常使用的方式是底部tab菜單,但是在使用tab時底部最多只能顯示5個菜單就顯示不全了,還有一個問題是tab會占用一部分屏幕,讓顯示內容的view變小。
3.現在有一種比較流行的菜單做法是左側滑出抽屜菜單,選擇完成之后將菜單收起來隱藏出來。這種抽屜菜單最早是path在iOS上推出的一種菜單設計。
什么是抽屜效果?????
1.菜單頁面實際上就是一個UITableView,它解決了tab菜單最多能顯示5個模塊的問題。
2.當用戶進入某模塊時,主視圖會將菜單頁面給遮蓋住,使得頁面變得更簡潔。
具體實現: