(1/18)重学Standford_iOS7开发_iOS概述_课程笔记

时间:2021-11-24 20:58:37

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

            如下图所示:(1/18)重学Standford_iOS7开发_iOS概述_课程笔记

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

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

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

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

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

          多MVC情况如下图所示:

        (1/18)重学Standford_iOS7开发_iOS概述_课程笔记(1/18)重学Standford_iOS7开发_iOS概述_课程笔记

    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. &lpar;8&sol;18&rpar;重学Standford&lowbar;iOS7开发&lowbar;协议、block、动画&lowbar;课程笔记

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

  2. &lpar;7&sol;18&rpar;重学Standford&lowbar;iOS7开发&lowbar;视图、绘制、手势识别&lowbar;课程笔记

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

  3. &lpar;6&sol;18&rpar;重学Standford&lowbar;iOS7开发&lowbar;控制器多态性、导航控制器、选项卡栏控制器&lowbar;课程笔记

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

  4. &lpar;4&sol;18&rpar;重学Standford&lowbar;iOS7开发&lowbar;框架和带属性字符串&lowbar;课程笔记

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

  5. &lpar;9&sol;18&rpar;重学Standford&lowbar;iOS7开发&lowbar;动画、自动布局&lowbar;课程笔记

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

  6. &lpar;5&sol;18&rpar;重学Standford&lowbar;iOS7开发&lowbar;视图控制器生命周期&lowbar;课程笔记

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

  7. &lpar;3&sol;18&rpar;重学Standford&lowbar;iOS7开发&lowbar;Objective-C&lowbar;课程笔记

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

  8. &lpar;2&sol;18&rpar;重学Standford&lowbar;iOS7开发&lowbar;Xcode&lowbar;课程笔记

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

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

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

随机推荐

  1. Linux常用网络命令

    1.tracepath tracepath追踪出到指定的目的地址的网络路径,并给出在路径上的每一跳(hop).如果你的网络有问题或是慢了,tracepath可以查出网络在哪里断了或是慢了. 命令格式: ...

  2. 【CMD】日常总结

    命令脚本可以提升工作效率,之前用过也写过一些脚本,但时间一长就忘记了.写篇随笔记录一下,随用随记哈. 调用程序 //切换到某个路径下 cd D:\Glodon\GDW\GDW\Release\Bin ...

  3. HDU 5007 Post Robot KMP &lpar;ICPC西安赛区网络预选赛 1001&rpar;

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5007 解题报告:输入一篇文章,从头开始,当遇到 “Apple”, “iPhone”, “iPod”, ...

  4. JNDI 和JDBC的区别

    1.JNDI 和JDBC的区别和联系.两者都是API,是一个标准.并不是什么产品或方法.JDBC 全称:Java Database Connectivity 以一种统一的方式来对各种各样的数据库进行存 ...

  5. JavaWEB域对象

    PageContext: ServletRequest: HttpSession: ServletContext: void setAttribute(String name, Object valu ...

  6. Spring-----&gt&semi;projects-----&gt&semi;Spring Boot

    1.概述:(about Spring Boot) Spring boot是在spring framework的基础上搭建起来的一个基本项目,该项目中已经集成了spring框架下的若干模块以及sprin ...

  7. CSS禁止Chrome谷歌浏览器激活输入框后自动添加橘黄色边框

    Chrome默认会为所有的输入框加上橘黄色的边框,虽然有时候可以使我们的网站看起来更友好,但对自定义的样式是有影响的.当鼠标点击输入框时,在谷歌chrome浏览器中,光标移到输入框时激活输入框会被加上 ...

  8. 潭州课堂25班:Ph201805201 django 项目 第三课 码云注册,django项目 &lpar;课堂笔记&rpar;

    d码云注册,登录, 创建项目: 生成秘钥 想看秘钥: 添加公钥 复制 ssh 连接 通过  git clone <ssh> 连接 在服务器上创建 python3 虚拟环境, 创建项目  p ...

  9. abap函数返回结构体类型

    1: 定义一个结构体 T-CODE   se11 2: 选择 structure 3:输入相应的字段 4:激活 5:创建一个function module zfm_return_table,返回类型为 ...

  10. DHCP服务原理

    DHCP 工作原理 一.什么是DHCP? DHCP,动态主机配置协议,前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,常用的2个端口:67(DHCP server),68(DHCP ...