zoukankan      html  css  js  c++  java
  • (1/18)重学Standford_iOS7开发_iOS概述_课程笔记

      写在前面:上次学习课程对iOS还是一知半解,由于缺乏实践,看公开课的视频有时不能很好地领会知识。带着问题去学习永远是最好的方法,接触一段时间iOS开发以后再来看斯坦福iOS公开课,又会有许多新的发现,对于已有的概念有了新的认识。这次课程笔记主要用作归纳知识点,整理学习思路,与大家讨论课后习题,交流等。

      第一课:iOS概述

        1、iOS分层:①Core OS:核心操作系统层,基于UNIX内核(套接字,文件系统,电源管理,钥匙串,Bonjour等)。API多为C函数,实际应用使用较少。

               ②Core Servers:核心服务层(数组,字典,字符串,面向对象的文件系统,多线程,GPS,数据库等),使用较多。

               ③Media:媒体层(视频,图像,音频编辑等),使用较多。

               ④CocoaTouch:触控应用层(控件如按钮,文本框等,交互动画,本地化,相机,网页浏览视图等),使用较多。

        2、开发相关:①工具:Xcode

                ②语言:objective-C

                ③框架(framework):Foundation,CoreData,MapKit,UIKit,CoreMotion等

                ④设计模式:MVC(推荐),其他模式在后续课程中也会使用到,MVC贯穿始终。

        3、MVC设计模式:Model,View,Controller:一种将应用中的类组织起来的策略,所有的类将被分入这三块之一。

                  Model = What your application is (but not how it is displayed) 

                  Controller = How your Model is presented to the user (UI logic) 

                  View = Your Controller’s minions 

                如下图所示:

              通信方式:①控制器(controller)直接操作模型(Model),可以直接使用其API

                   ②控制器(controller)直接操作视图(View),通过输出口的方式(outlet),可以直接使用其API。

                     ③模型(Model)与视图(View)之间禁止通信。(模型完全独立于UI)

                   ④视图(View)不能直接与控制器(Controller)通信,而是通过以下间接方式:target-action(如按钮,滑动条等),协议(委托(delegate)or 数据源(dataSource)):protocol(如tableview等)。

                   ⑤模型(Model)不能直接与控制器(Controller)通信,而是通过通知机制(Notification)或者键值观察机制(KVO)来进行通信。

              多MVC情况如下图所示:

                

        4、objective-C

          ①strong&weak:strong:只要有强指针指向对象,就在堆中保持这个对象,当不再有强指针指向对象时(nil),则对象会被释放。

                    weak:当没有强指针指向对象时(可能还有弱指针指向对象),释放对象。

          ②nonatomic:非原子性,表示此对象不是线程安全的,若为原子性会在属性的setter和getter方法中加锁,影响性能。

        5、源代码

          Card.h

    1 #import <Foundation/Foundation.h>
    2 
    3 @interface Card : NSObject
    4 @property (strong,nonatomic) NSString *contents;
    5 @property (nonatomic,getter=isChosen) BOOL chosen;
    6 @property (nonatomic,getter=isMacthed) BOOL matched;
    7 
    8 - (int)match:(NSArray *)otherCards;
    9 @end
    Card.h

          Card.m

     1 #import "Card.h"
     2 
     3 @interface Card()
     4 
     5 @end
     6 
     7 @implementation Card
     8 
     9 - (int)match:(NSArray *)otherCards
    10 {
    11     int score = 0;
    12     
    13     for (Card *card in otherCards)
    14     {
    15         if ([card.contents isEqualToString:self.contents])
    16         {
    17             score = 1;
    18         }
    19     }
    20     
    21     return score;
    22 }
    23 
    24 @end
    Card.m

        6、作业:

    课程视频地址:网易公开课:http://open.163.com/movie/2014/1/M/7/M9H7S9F1H_M9H7TMJM7.html

           或者iTunes U搜索standford课程

  • 相关阅读:
    Shell编程常用
    毕设问答
    《如何高效学习》
    《如何阅读一本书》(未完)
    《牧羊少年奇幻之旅》
    2019.04月总结
    上周还是合意的,且找到了一定的遵循4.6-4.12

    错误和异常
    数据结构
  • 原文地址:https://www.cnblogs.com/nslogmeng/p/4512707.html
Copyright © 2011-2022 走看看