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设计模式(略,参考之前的帖子) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

电视在放成龙的 我是谁

唉,是啊,我是谁,到底是谁呢?

iOS开发笔记(一)

这是本人在开发中简单整理的iOS笔记,有点凌乱吧  哈哈。不过内容简单易懂  希望你能喜欢。 1、内存 内存溢出:内存不够用,数据溢出 内存泄漏:该释放的对象没有释放 2、性能检测方法 静态分析...

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对象中取得文本内...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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