美文网首页笔记
《斯坦福大学公开课:iOS 7应用开发》(第一课)

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

作者: 卧浪而行 | 来源:发表于2014-10-13 18:30 被阅读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与实例变量的区别与联系,分别有什么优势和劣势。

    相关文章

      网友评论

      • b59457960ac9:赞一个,还不是很熟悉那几种通信方式,谢谢你的文章了解了下通知

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

      本文链接:https://www.haomeiwen.com/subject/almutttx.html