cocoa touch 是百分百面向对象的,使用MVC设计模式。
预备知识:
面向对象编程,数据结构等;
面向对象术语(class,instance,message,methord,instance variable,superclass,subclass)
IOS分为四层:
cocoa touch
media
core services
core os
平台组成:
工具:xcode 等
语言:oc
框架:map kit,ui kit ,core data 等
设计模式:MVC
MVC:组织程序中所有的类,当多个视图时候,可以通过多个MVC相结合来实现,M与M可相互交流,V与V独立,C与C下属关系,同一个M可以供多个C使用
三部分组成:view,model,controller;
C与V: C可以向V发消息(因outlet的存在);
C可以给V指定动作,在UI中当v触发该动作时,c收到该消息并处理;
C设置自己作为V的代理(代理通过协议设置,did,will,should的代理),V需要做的由C实现;
C设置自己作为V的代理(数据源代理),V需要的数据由C提供(C从M获取数据传给V)
C与M: C可以向M发消息
M与C: 当M数据改变可以把自己设为广播站,(C接收广播,M发送给对其感兴趣的事物)
V与M: 相互独立
OC:
头文件.h,实现文件.m,C的超集;
OC中通常不访问变量,而是访问属性,一个属性是get和set方法的结合,get使用属性名字,set使用set加上开头大写的属性名;
公有声明:
IOS7中可以使用@import Foundation; 来导入框架#import <Foundation/foundation.h> @interface Card : NSObject @end
nsobject是IOS中所有类的父类;
私有声明(扩展中)+实现:
#import "Card.h" @interface Card() @end @implementation Card @end
头文件加上:
在OC中,所有的对象都在堆中,所以,将不会存在NSString contents;@property (strong)NSString* contents
strong 表示:只要指向该对象的指针不被设置为nil,将一直存在堆中。
weak表示:如果没有strong型指针指向它,它会被扔出内存,然后设置为nil(在任何时间都可能发生)
nonatomic表示;非线程安全的,如果不设置它,它会锁住代码,使代码复杂化
@property (nonatomic) BOOL matched
基本类型不会存放在堆中,所以不必指定strong 或 weak。
@property (nonatomic,getter = isMatched) BOOL matched
get方法名由 matched改为isMatched,方法声明:
方法实现:-(int)match:(Card*)card;