笔记

《斯坦福大学公开课:iOS 7应用开发》(第一课)

2014-10-13  本文已影响202人  卧浪而行

在学习本课程前你需要:

1.面向对象编程概念

2.较多的编程经验

iOS四层体系:

1.cocoa touch 

2.media

3.core services

4.core OS

学习的东西:

1.工具:Xcode instruments

2.语言:objective-c

3.框架:最重要的两个是foundation和UIKit,其他的还有core data,mapkit,core motion等

4.设计策略:M(model)V(view)C(controller)模式--将应用所有的类有效的组织起来的策略。

下面引用网上的一段博客,其对mvc模式的理解比较到位。

首先图中绿色的箭头表示直接引用。直接引用直观来说,就是说需要包含引用类的申明头文件和类的实例变量。可以看到,只有Controller中,有对Model和View的直接引用。其中对View的直接引用体现为IBOutlet。然后我们看View是怎么向Controller通讯的。对于这个,iOS中有3种常见的模式:设置View对应的Action Target。如设置UIButton的Touch up inside的Action Target。设置View的delegate,如UIAlertViewDelegate, UIActionSheetDelegate等。设置View的data source, 如UITableViewDataSource。 通过这3种模式,View达到了既能向Controller通讯,又不需要知道具体的Controller是谁是目的,这样就和Controller解耦了。最后我们看Model。Model在图上有一个信号塔类似的图形,旁边写着Notification & KVO。这表明Model主要是通过Notification和KVO来和Controller通讯的。关于Notification,我写了一个模版代码片段如下:

// 监听通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(<#methodName#>) name:kLoginNotification object:nil];

// 取消监听

[[NSNotificationCenter defaultCenter] removeObserver:self];

// 发送通知

NSDictionary * userInfo = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:200] forKey:@"code"];

[[NSNotificationCenter defaultCenter] postNotificationName:<#notification_name#> object:self userInfo:userInfo];

所以,对于初学者,要正确地使用MVC模式还是挺难的,回想我们以前做公司某产品iphone版的时候,就有一些Model层直接依赖了Controller层,比如Model层更新数据失败了,直接调用Controller层显示出一个失败的提示界面。这样层次划分不清,造成我们做ipad版的时候很痛苦。最后我们做了代码重构,把Model的相应改变都用Notification来完成,使得在做ipad版开发时轻松了很多。

在讲完这些基础概念后,第一节课最后的时候白老头演示了一下property是如何使用的。

这也是OC与其他面向对象语言区别较大的一部分,需要理解使用proper与实例变量的区别与联系,分别有什么优势和劣势。

上一篇下一篇

猜你喜欢

热点阅读