IOS开发指南读书笔记5(IOS 常用设计模式)

原创 2015年11月18日 11:36:15
IOS开发指南读书笔记5(IOS 常用设计模式)
1、单例模式
构造方法

@interface Singleton : NSObject

+(Singleton*)sharedInstance;

@property(nonatomic,strongNSString* singletonData;

@end

@implementation Singleton

@synthesize singletonData = _singletonData;

static Singleton* sharedInstance = nil;

+(Singleton*)sharedInstance

{

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        sharedInstance = [[self alloc]init];

    });

    return sharedInstance;

}

@end

 应用案例
UIApplication,UIAccelerometer,NSUserDefaults,NSNotificationCenter,NSFileManager,NSBundle


2、委托模式
构建方法

//委托协议
@protocol Delegate <NSObject>
 
//执行完毕
 
-(void)exeFinish;
 
@end


//通用类
@interface CustomClass : NSObject
 
 //委托对象
 
 @property(nonatomic,assignid<Delegate> delegate;
 
 -(void)doSomething;
 
 @end

 @implementation CustomClass

@synthesize delegate = _delegate;

-(void)doSomething

{

    //do something

      NSLog(@"通知委托对象事情做完了");

    if (self.delegate && [self.delegate respondsToSelector:@selector(exeFinish)]) {

        [self.delegate exeFinish];

    }    
 
}
 
@end

//委托实现类

@interface DelegateImplements : NSObject <Delegate>

@end 

@implementation DelegateImplements

-(void)exeFinish

{

    NSLog(@"执行完毕");
}
 
@end 


//创建对象
 
CustomClass* instance = [[CustomClass alloc]init];
 
DelegateImplements* delegate = [[DelegateImplements alloc]init];
 
instance.delegate = delegate;

  应用案例
UITextFieldDelegate,UITableViewDelegate,UIActionSheetDelegate等。

3、观察者模式

//抽象观察者

@protocol Observer<NSObject>

@required

-(void)update;

@end


//抽象主题

@protocol Subject<NSObject>

-(void)addObserver:(id<Observer>)observer;

-(void)removeObserver:(id<Observer>)observer;

@end


//真正观察者

@interface TrueObserver : NSObject<Observer>

@end


@im
plementation TrueObserver

 -(void)update
 
{
 
    NSLog(@"刷新");
 
}
 
@end


//真正主题
@interface TrueSubject : NSObject<Subject>
 
{
 
     //观察者数组
 
     NSMutableArray* observers;
 
 }

@property(nonatomic,strongNSMutableArray* observers;

+(TrueSubject*)sharedSubject;

@end


@implementation TrueSubject
 
@synthesize observers;
 
static TrueSubject* instance = nil;
 
+(TrueSubject*)sharedSubject
 
{
 
static dispatch_once_t onceToken;
 
    dispatch_once(&onceToken, ^{
     
instance = [[self alloc]init];
     
instance.observers = [NSMutableArray array];
 
});
 
 return instance;
 
}

-(void)addObserver:(id<Observer>)observer
 {
 
 [self.observers addObject:observers];
 
}

-(void)removeObserver:(id<Observer>)observer
{
 
  [self.observers removeObject:observers];
 
}

//通知所有对象
 
-(void)notifyAllOberser
 
{
 
for (id observer in self.observers) {
 
 [observer update];
 
}
 
}

@end 

实际案例NSNotificationCenter

 KVO机制

//KVO主题

@interface KVOSubject : NSObject

//观察属性

@property(nonatomic,copyNSString* observerProperty;

@end

//KVO观察者

@interface KVOObserver : NSObject
 
@end 

@implementation KVOSubject

@synthesize observerProperty;

-(id)init
{

    self = [super init];
 
 if (self) {
 
  KVOObserver* observer = [[KVOObserver alloc]init];
 
 [self addObserver:observer forKeyPath:@"observerProperty" options:NSKeyValueObservingOptionNew context:@"Pass Context"];

        self.observerProperty = @"呵呵";

        self.observerProperty = @"嘻嘻";

        self.observerProperty = @"hehe";

        [self removeObserver:observer forKeyPath:@"observerProperty"  context:@"Pass Context"];

    }

    return self;

}
@end

@implementation KVOObserver

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
 
{
 
NSLog(@"%@",change[@"new"]);
 
}
 
@end 


4、MVC设计模式(略,参考之前的帖子) 

4-读书笔记----iOS开发指南:从零基础到App Store上架--iOS视图控制器与导航模式

视图控制器与导航模式 介绍平铺导航、标签导航、树形结构导航的使用方式 与导航相关的视图控制器整理如下。  UIViewController。用于自定义视图控制器的导航。例如,对于两个界面的...
  • blacet
  • blacet
  • 2015年11月30日 01:14
  • 693

6-读书笔记----iOS开发指南:从零基础到App Store上架--iOS-iPhone与iPad应用开发的差异和iOS分层架构设计

iPhone与iPad应用 开发的差异 由于iPhone和iPad尺寸不同,应用场景也不同,因此在导航模式上有比较大的差异,一些控件在展现方 式上会有很多差别,所以iPad有一些特有的API。 ...
  • blacet
  • blacet
  • 2015年12月10日 00:42
  • 628

IOS开发指南读书笔记8(AutoLayout) 2

IOS开发指南读书笔记8(AutoLayout) 其原理类似Android的RelativeLayout,适用于IOS6以上。如果不同约束有冲突,回遵循优先级的高的约束。 一、可以...

IOS开发指南读书笔记1(Xcode的基本使用)

IOS开发指南读书笔记1(Xcode的基本使用) 1、用Xcode创建工程 Product Name:工程名字 Organization Name:组织名字 Company Identifier:...

IOS开发指南读书笔记2(应用程序的生命周期)

1、程序的五种状态 Not Running:未运行。 Inactive:前台非活动状态。处于前台,但是不能接受事件处理。 Active:前台活动状态。处于前台,能接受事件处理。 Backgro...

《iOS开发指南:从零基础到App Store上架》读书笔记(二)

P230 NSLayoutManager、NSTextContainer、NSTextStorage之间究竟是什么关系呢?NSLayoutManager对象从NSTextStorage对象中取得文本内...

IOS开发指南读书笔记12(IOS数据持久层的建立4)

IOS开发指南读书笔记12(IOS数据持久层的建立4)  建立CoreData需要首先建立一个模型文件 生成的后缀是xcdatamodeid,但是编译之后在沙盒的momd文件 首先A...

2-读书笔记----iOS开发指南:从零基础到App Store上架--iOS视图和控件

视图和控件 UIView“家族” UIView类的继承层次 应用界面的构建层次 iOS应用界面是由若干个视图构建而成的,这些视图对象采用树形构建 视图分类 为了便于开发,苹果将UIKi...
  • blacet
  • blacet
  • 2015年11月20日 00:12
  • 691

1-读书笔记----iOS开发指南:从零基础到App Store上架--iOS入门

iOS的系统架构分为4层——Cocoa Touch层、Media层、Core Services层和Core OS层 AppDelegate类是应用程序委托对象,这个类中继承的一系列方法在应用生...
  • blacet
  • blacet
  • 2015年11月08日 21:46
  • 903

12-读书笔记----iOS开发指南:从零基础到App Store上架--iOS-数据持久化

iOS-国际化
  • blacet
  • blacet
  • 2016年05月13日 10:32
  • 332
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS开发指南读书笔记5(IOS 常用设计模式)
举报原因:
原因补充:

(最多只允许输入30个字)