(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
#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概述_课程笔记的更多相关文章
- (8/18)重学Standford_iOS7开发_协议、block、动画_课程笔记
第八课: 1.协议 另一种安全处理id类型的方式如:id <MyProtocol> obj a.声明 //协议一般放于.h文件中或者在类的.h文件中 @protocol Foo <X ...
- (7/18)重学Standford_iOS7开发_视图、绘制、手势识别_课程笔记
第七课: 1.View 一般来说,视图是一个构造块,代表屏幕上一块矩形区域,定义了一个坐标空间,并在其中绘制及添加触控事件等. ①视图的层级关系 一个视图只能有一个父视图,可以有多个子视图 - ( - ...
- (6/18)重学Standford_iOS7开发_控制器多态性、导航控制器、选项卡栏控制器_课程笔记
终于有时间跟新了,两周时间复(yu)习(xi)了5门考试累觉不爱...... ------------------------------------------------------------- ...
- (4/18)重学Standford_iOS7开发_框架和带属性字符串_课程笔记
第四课(干货课): (最近要复习考试,有点略跟不上节奏,这节课的内容还是比较重要的,仔细理解掌握对今后的编程会有很大影响) 本节课主要涉及到Foundation和UIKit框架,基本都是概念与API知 ...
- (9/18)重学Standford_iOS7开发_动画、自动布局_课程笔记
最近开始实习,没多少时间更新了=_= 第九课: 1.上节课demo:Dropit完整实现 https://github.com/NSLogMeng/Stanford_iOS7_Study/commit ...
- (5/18)重学Standford_iOS7开发_视图控制器生命周期_课程笔记
第五课: 1.UITextView @property (nonatomic, readonly) NSTextStorage *textStorage;//注意为只读属性,因此不能直接更改内容,NS ...
- (3/18)重学Standford_iOS7开发_Objective-C_课程笔记
第三课: 本节课主要是游戏实现的demo,因此我将把课程中简单的几个编程技巧提取出来,重点介绍如何自己实现作业中的要求. 纸牌游戏实现: ①游戏的进行是模型的一部分(理解什么是模型:Model = W ...
- (2/18)重学Standford_iOS7开发_Xcode_课程笔记
第二课: 1.惰性初始化 -(ObjectType *)example { f(!_example) example =[[ObjectType alloc] init]; return _examp ...
- 重学C语言---01概述
1.什么是C语言 C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点.计算机语言是从第二次世界大战以后,经历了戏剧性的发展过程.从机器语言到汇编语言和高级语言.C语言是与硬件 ...
随机推荐
- 蓝牙(3)如何通过蓝牙传输数据及UUID详介
如何通过蓝牙传输数据 通过蓝牙传输数据与Socket类似.在网络中使用Socket和ServerSocket控制客户端和服务端的数据读写.而蓝牙通讯也由客户端和服务端Socket来完成.蓝牙客户端So ...
- git删除中文文件
git中出现如下代码时,是因为文件中包含中文.而且我们也无法用 git rm name 命令来删除该文件. deleted: "chrome_plugin/source_file/iHub\ ...
- sublime text 2 配置文件
安装好 sublime text 2后不进行任何设置,如果允许 sublime text 2 软件的话,会在以下目录自动生成一个 sublime text 2 的文件夹,这个文件夹是用来放配置文件的, ...
- freemarker截取字符串
[#if a.title?length lt 23 ] ${a.title} [#else]${a.title[0..22]}...[/#if]
- 表格的一些原生js操作(隔行变色,高亮显示,添加删除,搜索)
看着网上的视频教程,虽说还是有点简单,但还是不免想记录下.这些操作包括(隔行变色,高亮显示,添加删除,搜索功能),而这儿就是涉及table的原有属性“tBodies” “rows” “cells”等几 ...
- 怎么找到MyEclipse->add struts capabilities
问:MyEclipse:我的工程右键可以MyEclipse->add struts capabilities之前有,后来不知怎么就没有了,谁知道怎么弄出来是struts 答:你已经add过一次了 ...
- Hibernate之QBC检索和本地SQL检索
QBC查询就是通过使用Hibernate提供的Query By Criteria API来查询对象,这种API封装了SQL语句的动态拼装,对查询提供了更加面向对象的功能接口 本地SQL查询来完善HQL ...
- [selenium webdriver Java]常用api
1. 获取元素文本 WebElement类的getText()方法返回元素的innerText属性.所以元素里如果有子节点一样也会被返回出来.如下所示 public class GetText { @ ...
- error: Setup script exited with error: Unable to find vcvarsall.bat
安装mxnet python版本时遇到“Unable to find vcvarsall.bat”错误搜索一下后查到如下方法: python 3.5.2版本依赖高版本的vs解决办法是安装vs2015的 ...
- 解决session失效之后登陆后重新返回之前的页面
在全局拦截器设置保存之前的url存入session中 登陆之后的地址再重session中存 request只用作一次请求 如果页面跳转几次的话原来的url就不存在了建议存在session @Overr ...