写在前面:上次学习课程对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

 #import <Foundation/Foundation.h>

 @interface Card : NSObject
@property (strong,nonatomic) NSString *contents;
@property (nonatomic,getter=isChosen) BOOL chosen;
@property (nonatomic,getter=isMacthed) BOOL matched; - (int)match:(NSArray *)otherCards;
@end

Card.h

      Card.m

 #import "Card.h"

 @interface Card()

 @end

 @implementation Card

 - (int)match:(NSArray *)otherCards
{
int score = ; for (Card *card in otherCards)
{
if ([card.contents isEqualToString:self.contents])
{
score = ;
}
} return score;
} @end

Card.m

    6、作业:

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

       或者iTunes U搜索standford课程

(1/18)重学Standford_iOS7开发_iOS概述_课程笔记的更多相关文章

  1. (8/18)重学Standford_iOS7开发_协议、block、动画_课程笔记

    第八课: 1.协议 另一种安全处理id类型的方式如:id <MyProtocol> obj a.声明 //协议一般放于.h文件中或者在类的.h文件中 @protocol Foo <X ...

  2. (7/18)重学Standford_iOS7开发_视图、绘制、手势识别_课程笔记

    第七课: 1.View 一般来说,视图是一个构造块,代表屏幕上一块矩形区域,定义了一个坐标空间,并在其中绘制及添加触控事件等. ①视图的层级关系 一个视图只能有一个父视图,可以有多个子视图 - ( - ...

  3. (6/18)重学Standford_iOS7开发_控制器多态性、导航控制器、选项卡栏控制器_课程笔记

    终于有时间跟新了,两周时间复(yu)习(xi)了5门考试累觉不爱...... ------------------------------------------------------------- ...

  4. (4/18)重学Standford_iOS7开发_框架和带属性字符串_课程笔记

    第四课(干货课): (最近要复习考试,有点略跟不上节奏,这节课的内容还是比较重要的,仔细理解掌握对今后的编程会有很大影响) 本节课主要涉及到Foundation和UIKit框架,基本都是概念与API知 ...

  5. (9/18)重学Standford_iOS7开发_动画、自动布局_课程笔记

    最近开始实习,没多少时间更新了=_= 第九课: 1.上节课demo:Dropit完整实现 https://github.com/NSLogMeng/Stanford_iOS7_Study/commit ...

  6. (5/18)重学Standford_iOS7开发_视图控制器生命周期_课程笔记

    第五课: 1.UITextView @property (nonatomic, readonly) NSTextStorage *textStorage;//注意为只读属性,因此不能直接更改内容,NS ...

  7. (3/18)重学Standford_iOS7开发_Objective-C_课程笔记

    第三课: 本节课主要是游戏实现的demo,因此我将把课程中简单的几个编程技巧提取出来,重点介绍如何自己实现作业中的要求. 纸牌游戏实现: ①游戏的进行是模型的一部分(理解什么是模型:Model = W ...

  8. (2/18)重学Standford_iOS7开发_Xcode_课程笔记

    第二课: 1.惰性初始化 -(ObjectType *)example { f(!_example) example =[[ObjectType alloc] init]; return _examp ...

  9. 重学C语言---01概述

    1.什么是C语言 C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点.计算机语言是从第二次世界大战以后,经历了戏剧性的发展过程.从机器语言到汇编语言和高级语言.C语言是与硬件 ...

随机推荐

  1. Tomcat 部署Undeployment Failure

    Tomcat 部署Undeployment Failure - yongjava的日志 - 网易博客 http://blog.163.com/qiangyongbin2000@126/blog/sta ...

  2. WAMP 80端口被Microsoft-HTTPAPI/2.0占用的解决办法

    WAMP 80端口被Microsoft-HTTPAPI/2.0占用的解决办法 - likebeta - 博客园 http://www.cnblogs.com/likebeta/archive/2012 ...

  3. while ((ch = getchar()) != EOF)中ch定义为char还是int型?cin、scanf等如何结束键盘输入

    2013-07-09 18:55:42 EOF是文件的结束符,具体可以作为文本文件的结束符,也可以作为键盘输入char类型数据时的结束符.对于不同的系统,EOF的定义可能不同,一般定义为-1.因为ch ...

  4. 从今天起,正式步入cnblogs,向曾经的脚印说声对不起!

    步入这个行业也好多年了,从来没有定居过一个地方. 看过很多前辈们留下的资料,对后者门(其中还有我)留下很多珍贵的东西. 所以,我要向前辈学习,壮大自己,在学习的同时,不要忘记帮助别人. 对曾经我留下的 ...

  5. android从应用到驱动之—camera(1)---程序调用流程[转]

    一.开篇 写博客还得写开篇介绍,可惜,这个不是我所擅长的.就按我自己的想法写吧. 话说camera模块,从上层到底层一共包含着这么几个部分: 1.apk------java语言 2.camera的ja ...

  6. 数据库 MySQL Jdbc JDBC的六个固定步骤

    *0 案例:    a)在JavaScript中使用正则表达式,在JS中正则表达式的定界符是://     var regexp = /^[0-9]+$/;     if(regexp.test(nu ...

  7. 【HDOJ】1667 The Rotation Game

    1. 题目描述有个#字型的条带,可以从横线或竖线进行循环移动,求通过各种移动最终使中心的8个字符全等的长度最短并相同长度字典序最小的操作序列.2. 基本思路24个数据,8种移动方式,数据量很小了,所以 ...

  8. linux切换用户

    当前使用root账户 [root@localhost chucklu]# cd[root@localhost ~]# pwd/root 切换到普通账户 [root@localhost ~]# su c ...

  9. Android-xUtils框架介绍(一)

    Android基于快速开发的一个框架——xUtils,它是在aFinal基础上进行重构和扩展的框架,相比aFinal有很大的改善.同时,如果如果你的应用是基于网络的,那么只要处理得当,它会让你彻底的摆 ...

  10. HTML5学习(八)----Web存储

    参考地址:http://www.w3school.com.cn/html5/html_5_webstorage.asp 在客户端存储数据 HTML5 提供了两种在客户端存储数据的新方法: localS ...