• [iOS]关于零基础学习iOS开发的学习方法总结


    关于零基础学习iOS开发的学习方法总结

    最近很多零基础来参加蓝鸥培训的学生经常会问到一些学习方法的问题,就如下我自己见过的好的学习方法一起讨论一下.

    • 蓝鸥iOS开发技术的学习路线图
    • 程序员的主要工作是什么
    • 在培训期间,老师与学生的时间应该如何分配

    蓝鸥培训的主要内容是什么

    • iOS开发技术
    • Unity3D开发技术
    • Android开发技术
    • HTML5开发技术

    iOS开发技术的学习路线图

    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

  • 相关阅读:
    POJ
    POJ
    HDU
    HDU
    HDU
    POJ
    HDU
    POJ
    A-meeting 2019牛客暑期多校第四场 (树的直径)
    算法与数据结构实验题 2.1 塔防
  • 原文地址:https://www.cnblogs.com/daxiaxiaohao/p/4781548.html
Copyright © 2020-2023  润新知