關於零基礎學習iOS開發的學習方法總結
最近很多零基礎來參加藍鷗培訓的學生經常會問到一些學習方法的問題,就如下我自己見過的好的學習方法一起討論一下.
- 藍鷗iOS開發技術的學習路線圖
- 程序員的主要工作是什么
- 在培訓期間,老師與學生的時間應該如何分配
藍鷗培訓的主要內容是什么
- iOS開發技術
- Unity3D開發技術
- Android開發技術
- HTML5開發技術
iOS開發技術的學習路線圖
- [x] C語言技術基礎
- [x] OC開發基礎
- [x] UI界面開發基礎
- [x] 項目數據邏輯
- [x] iOS高級程序開發
- [x] 項目優化技術
- [x] 團隊配合技術
程序員的主要工作是什么
- 閱讀代碼
- 閱讀公司中已經處於迭代過程中的代碼(理解公司前輩開發過程中的開發思路);
- 閱讀Github上的優秀的代碼框架(比較Forks與Stars的數量)(學習其他優秀程序員編寫代碼功能時的思路);
- 閱讀代碼的目的,是我們要做到對項目代碼的執行流程和細節做到胸有成竹;
在閱讀代碼的過程中,需要注意的流程:
1.首先復制一份原始代碼到當前路徑,並且保存為文件名加日期;
例如:LODoudizhu2015-03-22
2.然后找到AppDelegate.m
文件,並且從程序的啟動流程中,閱讀相關的功能代碼;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//...
//程序啟動流程
}
3.嘗試注釋程序中的某行我們認為的重要性語句,並且運行程序看結果;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
//例如,如下行的代碼就非常重要,因為它決定了我們的本程序是否可以顯示界面
//[self.window makeKeyAndVisible];
LO_RootViewController *root = [[LO_RootViewController alloc] init];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:root];
self.window.rootViewController = nav;
return YES;
}
4.當遇到與我們期望的運行結果不同時,可以通過進入該函數內部查看內部的實現代碼,並且重復第三步;
5.直到,我們可以將我們負責的模塊功能的實現方式.
- 編寫代碼
- 編寫功能中的主要邏輯代碼(主要以實現功能為主);
- 編程功能中需要測試邏輯是否正確的測試用例(主要以測試Bug為主);
- 編寫提供給同事或者其他人的接口代碼(主要以代碼使用方便為主);
1.主要邏輯代碼剛剛寫完時,其實會很丑,有很多的if,for等等,舉例如下:
- (void)onGetGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error
{
//
if ([result.address isEqualToString:self.startAddressTF.text]) {
// 說明當前編碼的對象是開始節點
self.startNode = [[BMKPlanNode alloc] init];
// 給節點的坐標位置賦值
_startNode.pt = result.location;
// 發起對目標節點的地理編碼
// 1.創建正向地理編碼選項對象
BMKGeoCodeSearchOption *geoOption = [[BMKGeoCodeSearchOption alloc] init];
geoOption.city = self.endCityTF.text;
geoOption.address = self.endAddressTF.text;
// 執行正向編碼
[self.getCodeSearch geoCode:geoOption];
//
self.endNode = nil;
}else{
self.endNode = [[BMKPlanNode alloc] init];
_endNode.pt = result.location;
}
if (_startNode != nil && _endNode != nil) {
// 開始進行路線規划
// 1.創建駕車路線規划
BMKDrivingRoutePlanOption *drivingRoutOption = [[BMKDrivingRoutePlanOption alloc] init];
// 2.指定開始節點和目標節點
drivingRoutOption.from = _startNode;
drivingRoutOption.to = _endNode;
// 3.讓路線搜索服務對象搜索路線
[self.routeSearch drivingSearch:drivingRoutOption];
}
}
2.用例測試代碼在編寫過程中,其實是最消耗時間的部分,因為要大量的舉例論證Bug:
// Use this for initialization
void Start ()
{
//打開數據庫
LOSQLiteTools.OpenDB("yihuiyun");
SQLObject[] list = LOSQLiteTools.SelectEntity (typeof(Student));
foreach (SQLObject item in list)
{
Debug.Log (item.ToString());
}
}
3.當開始給同事編寫接口代碼時,要注意的地方就是方便些與擴展性的問題了:
#region 公開函數
/// <summary>
/// 異步加載資源
/// </summary>
public IEnumerator LoadAssetAsync (string assetBundleName)
{
//開始加載包裹
yield return StartCoroutine(LoadAssetBundle (assetBundleName));
}
/// <summary>
/// 異步加載場景
/// </summary>
public IEnumerator LoadLevelAsync (string assetBundleName)
{
//加載資源包
yield return StartCoroutine(LoadAssetBundle (assetBundleName));
}
#endregion
在培訓期間,學生的時間應該如何分配
學生在學習期間的主要工作時間分配
- 9:00~ 9:30,認真聽同學的學習階段中的分享,俗話說的好"三人行,必有我師";
- 9:30~ 18:00,認真聽老師的課堂上課,並且要准備好一個手寫筆記本,好記性不如爛筆頭,當然我個人認為記錄在電腦上,並不靠譜,而且在復習時還費眼,我從開始上學到現在就一直有在筆記本上寫寫畫畫的習慣;
- 19:00~ 20:00,用一個小時的時間,回憶今天上課的知識點,這時筆記本的重要性就體現了,它可以幫助我們心無旁騖的復習和總結;
- 20:00~ 22:00,用來完成今天的作業及預習第二天的內容,並且將作業中遇到的問題及預習時遇到的問題記錄下來,在第二天上課時可以拿出筆記本來問老師;
如果還有遇到需要時間去補習的內容,可以在每個周周六、周日,通過解決筆記本上的遺漏知識點來補習.
順便提供給大家相關的復習視頻:
C語言技術視頻:
鏈接: http://pan.baidu.com/s/1jGH7WQ6 密碼: smv8
iOS技術視頻:
鏈接: http://pan.baidu.com/s/1o6ORsoU 密碼: hvfm
還有需要幫忙的請QQ或者郵箱聯系我.
QQ:632138357
Mail:xiaohao@lanou3g.com