【分享】零基础学习iOS开发的学习方法总结

本文针对零基础学习iOS开发的学员提供了详细的学习方法与时间管理建议。内容涵盖iOS开发技术路线图、程序员日常工作内容解析及培训期间的学习时间分配等。

据小编了解很多学习iOS的都是半路出家,之前根本就没有接触过编程方面的知识,只是知道iOS行业发展前景非常好,就业薪资非常高。

有的人选择去培训一下,例如去蓝鸥学习iOS;有的人选择自学。那不论是培训学习还是自学iOS,都会面临一个问题:零基础能学好iOS吗?

小编拿培训学习iOS的学生来举例。数据从蓝鸥内部学生管理系统得来的:我是一个零基础的学生,老师您讲的课程太快了,虽然当时能明白,但是第二天就会忘记,甚至学习了也不会用,老师我该怎么办?

这不,这篇文章就出来了。很多人零基础的学生都会遇到这样的困惑,我该如何解决?我们请到了集团教学总监助理肖浩老师为我们做了详细的解答。


最近很多零基础来参加蓝鸥培训的学生经常会问到一些学习方法的问题,就如下我自己见过的好的学习方法一起讨论一下.
  • 蓝鸥 iOS 开发技术的学习路线图
    程序员的主要工作是什么
    在培训期间 , 老师与学生的时间应该如何分配
    蓝鸥培训的主要内容是什么
    iOS 开发技术
    Unity3D 开发技术
    Android 开发技术
    HTML5 开发技术
    iOS 开发技术的学习路线图
    [x] C 语言技术基础
    [x] OC 开发基础
    [x] UI 界面开发基础
    [x]  项目数据逻辑
    [x] iOS 高级程序开发
    [x]  项目优化技术
    [x]  团队配合技术
    程序员的主要工作是什么
    阅读代码
    阅读公司中已经处于迭代过程中的代码 ( 理解公司前辈开发过程中的开发思路 );
    阅读 Github 上的优秀的代码框架 ( 比较 Forks Stars 的数量 )( 学习其他优秀程序员编写代码功能时的思路 );
    阅读代码的目的,是我们要做到对项目代码的执行流程和细节做到胸有成竹 ;
    在阅读代码的过程中,需要注意的流程 :
    1. 首先复制一份原始代码到当前路径 , 并且保存为文件名加日期 ;
    例如 ODoudizhu2015-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 ,用来完成今天的作业及预习第二天的内容,并且将作业中遇到的问题及预习时遇到的问题记录下来,在第二天上课时可以拿出笔记本来问老师 ;
    如果还有遇到需要时间去补习的内容,可以在每个周周六、周日,通过解决笔记本上的遗漏知识点来补习 .
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值