MVC and Introduction to Objective-C
IOS layer-Cocoa Touch、Media、Core Services、Core OS
MVC——
Model = What your application is (but not how it is displayed)
model阵营是你的应用是做什么的
Controller = How your Model is presented to the user (UI logic)
Controller阵营是你的model如何展现在用户面前,控制如何在UI上展现model
View = Your Controller's minions
view是Controller的仆人,view就是controller使用的工具
controller利用这些通用view来做model需要做的事,view应该是很通用的,利用通用的view来理解和使用这些功能。
controller向model发消息是100%被允许的。也是用了把model展现在屏幕上的,有完全的访问权。
controller是把model显示在屏幕上,它可以对view做任何事。(Controllers can also talk directly to their View)
outlet是一个表达式用来表示controller和view通信的一个属性。我们要在controller里创建outlets传到view中去。
The Model and View should never speak to each other.因为model和用户交互界面无关。
view(通用的)和controller(详细控制如何在屏幕展现model)之间的通信的是不可见的。view向controller通信的方法,有结构的方法,一个被称为target action,就是controller自己画一个target,然后把一个action交给它的view。
The Controller sets itself as the View's delegate.controller把自己设为委托。
delegation是另一个view和controller通信的方法。
view只是一个平面,用来显示数据,一个显示信息的平台.
Controllers are almost always that data source (not Model).类似地,view会有一个数据源的设置,controller会回应数据源。注意,数据源的delegation永远是controller,或者是controller指定的第三方,但不可能是model。
Controllers interpret/format Model information for the View。controller的工作是把model的信息传达给view,响应所有的delegation。
model是ui独立的,不能向controller发话。
controller的工作来用view显示model。
strong:表示保存这个指针对象的内存直到结束使用。
weak:表示如果没人在用这个指针了,那就设为nil。
所有的property初始值都是0.
obj-c比较特殊的一点是:如果你发送消息给nil,does nothing。
@synthesize 只为property变量分配一个指针空间,还是需要调用setter来设置(初始化)。
self是个指向自己的指针,[self topspeed];
[self topspeed]和self.topspeed是一样的。等号的两边都可以用.号,等号左边的.表示调用setter,右边表示getter。