(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课程

时间: 2024-10-05 09:15:13

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

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

终于有时间跟新了,两周时间复(yu)习(xi)了5门考试累觉不爱...... --------------------------------------------------------------------------我是正文分割线--------------------------------------------------------------------------------------------- 第六课 1.控制器多态性 这里控制器多态性是指在控制器中使用继承,通过继

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

第七课: 1.View 一般来说,视图是一个构造块,代表屏幕上一块矩形区域,定义了一个坐标空间,并在其中绘制及添加触控事件等. ①视图的层级关系 一个视图只能有一个父视图,可以有多个子视图 1 - (void)addSubview:(UIView *)aView; // 父视图添加子视图 2 - (void)removeFromSuperview; // 子视图从父视图移除自己 ②UIWindow UIView的顶级视图:一般情况下,iOS应用程序中只有一个UIWindow,指当前显示的屏幕内容

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

第八课: 1.协议 另一种安全处理id类型的方式如:id <MyProtocol> obj a.声明 //协议一般放于.h文件中或者在类的.h文件中 @protocol Foo <Xyzzy, NSObject>//<>中的内容表示还需实现自哪些协议,所有协议的根协议一般都是NSObject - (void)someMethod;//默认为必须实现的方法 @optional//可选方法声明 - (void)methodWithArgument:(BOOL)argumen

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

第三课: 本节课主要是游戏实现的demo,因此我将把课程中简单的几个编程技巧提取出来,重点介绍如何自己实现作业中的要求. 纸牌游戏实现: ①游戏的进行式模型的一部分(理解什么是模型:Model = What your application is (but not how it is displayed) )UI无关. ②编程技巧:创建一个新类时首先考虑公共部分(API),即别人如何使用这个类,再考虑其细节实现,以此来驱动整个设计. ③关于属性中使用NSInteger,NSUInteger,in

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

第二课: 1.惰性初始化 1 -(ObjectType *)example 2 { 3 f(!_example) example =[[ObjectType alloc] init]; 4 5 return _example; 6 } 直到使用前最后一刻才初始化变量 2.数组字面量格式 @[a,b,c,…,m,n]; 3.@synthesize 同时重写属性的setter与getter方法时,需要显式合成,否则编译器默认生成@synthesize example = _example; 4.类方

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

最近开始实习,没多少时间更新了=_= 第九课: 1.上节课demo:Dropit完整实现 https://github.com/NSLogMeng/Stanford_iOS7_Study/commit/cfc24c2c4300185d972cf151872d313414a48d32 2.Autolayout 比较简单请参照课件截图https://github.com/NSLogMeng/Stanford_iOS7_Study/blob/master/Slides/Lecture%209%20Sl

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

第五课: 1.UITextView @property (nonatomic, readonly) NSTextStorage *textStorage;//注意为只读属性,因此不能直接更改内容,NSTextStorage为NSMutableAttributeString的子类,因此可以更改字符串属性内容(而非字符串) //例如,添加属性 [self.body.textStorage addAttribute:NSForegroundColorAttributeName value:sender

一步步学敏捷开发:1. Scrum概述

Scrum概述 Scrum概述无非就是敏捷宣言.敏捷原则.Scrum框架和价值观.在之前先看段比较专业的Scrum介绍. Scrum是跨职能团队以迭代.增量的方式开发产品或项目的一种开发框架.它把开发组织成被称为Sprint的工作周期.这些迭代每个都不超过4周(最常见的是两周),并且无间歇地相继进行.Sprint是受时间箱限制的,无论工作完成与否它们都会在特定日期结束,并且从不延长.通常由Scrum团队来选定一个Sprint的时长,并且对于他们所有的Sprint都使用这一时长,直到这个团队能力提

重学C++ (1)

写在开头的话:这学期没有写太多的代码,终于把中英文两篇论文弄完了,趁着中间的空隙,想想找工作的处境.自己也定了自己的方向.不管学什么语言吧,每个语言都有自己的优势和使用的群体.只要自己是良马,终会有伯乐赏识. 定的标题为“重学C++” 本人之前使用C++基本上用作算法编写,MFC界面的学习编写,集成OpencV进行图像处理的项目开发或者论文实验 总的来说,能处理基本问题.但是远不能达到灵活的地步.所以下载了两本书<effective C++>和<effective STL>我希望能