1.单例设计模式
.h
//
// danli.h
// test ipad
//
// Created by 黄权浩 on 14-12-24.
// Copyright (c) 2014年 黄权浩. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface danli : NSObject
//创建单例
+ (instancetype)sharestand;
- (NSString *)danlidiaoyong;
@end
.m
//
// danli.m
// test ipad
//
// Created by 黄权浩 on 14-12-24.
// Copyright (c) 2014年 黄权浩. All rights reserved.
//
#import "danli.h"
#import "ViewController.h"
@implementation danli
//初始化
-(id)init
{
self=[super init];
if(self){
}
return self;
}
//创建单例
+ (instancetype)sharestand
{
static danli *dan = nil;
static dispatch_once_t once;
dispatch_once(&once,^{
dan = [[danli alloc] init];
});
return dan;
}
//单例内的方法
- (NSString *)danlidiaoyong
{
NSString *str = @"dadawdwa";
return str;
}
@end
调用方法
//
// ViewController.m
// test ipad
//
// Created by 黄权浩 on 14-12-24.
// Copyright (c) 2014年 黄权浩. All rights reserved.
//
#import "ViewController.h"
#import "danli.h"//我的单例
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//Do any additional setup after loading the view, typically from a nib.
//初始化
danli *dan = [danli sharestand];
//调用方法
_lb.text = [dan danlidiaoyong];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
2.协议代理
.h
//
// HqhDelegate.h
// test ipad
//
// Created by 黄权浩 on 14-12-24.
// Copyright (c) 2014年 黄权浩. All rights reserved.
//
#import <Foundation/Foundation.h>
//声明一个协议
@protocol Hmyname <NSObject>
//必须实现的协议(这里边的方法强制实现)
@required
//可以选择实现的协议(这里边的方法选择实现)
@optional
//写出我的名字吧
- (void)myname:(NSString *)param;
@end
@interface HqhDelegate : NSObject
//2.定义代理属性
@property (nonatomic, assign) id <Hmyname> delegate;
//代理的方法
-(void)mynameis;
@end
.m
//
// HqhDelegate.m
// test ipad
//
// Created by 黄权浩 on 14-12-24.
// Copyright (c) 2014年 黄权浩. All rights reserved.
//
#import "HqhDelegate.h"
/*
代理传值
*/
@implementation HqhDelegate
//代理传值
- (void)mynameis {
[self.delegate myname:@"黄权浩"];
}
@end
调用代理
//
// ViewController.h
// test ipad
//
// Created by 黄权浩 on 14-12-24.
// Copyright (c) 2014年 黄权浩. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "HqhDelegate.h"
@interface ViewController : UIViewController<Hmyname>//声明代理
@property (weak, nonatomic) IBOutlet UIImageView *img;
@property (weak, nonatomic) IBOutlet UILabel *lb;
@property (weak, nonatomic) IBOutlet UIImageView *img2;
@end
//代码块传值
.h
//
// hqhblock.h
// test ipad
//
// Created by 黄权浩 on 14-12-25.
// Copyright (c) 2014年 黄权浩. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface hqhblock : NSObject
//定义block
- (void)myname:(void(^)(NSString *name))writeName;
@end
.m
//
// hqhblock.m
// test ipad
//
// Created by 黄权浩 on 14-12-25.
// Copyright (c) 2014年 黄权浩. All rights reserved.
//
#import "hqhblock.h"
@implementation hqhblock
/**
* block传值
*/
//在参数中定义块代码
- (void)myname:(void (^)(NSString *))writeName{
if (writeName) {
//不用担心线程问题
dispatch_async(dispatch_get_main_queue(), ^{
//我的名字
writeName(@"黄权浩");
});
}
}
@end
代码块传值
//
// ViewController.m
// test ipad
//
// Created by 黄权浩 on 14-12-24.
// Copyright (c) 2014年 黄权浩. All rights reserved.
//
#import "ViewController.h"
#import "hqhblock.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//Do any additional setup after loading the view, typically from a nib.
//初始化代码块
hqhblock *hqh = [[hqhblock alloc] init];
//传值
[hqh myname:^(NSString *name) {
_lb.text = name;
}];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
//通知传值
//
// ViewController.m
// test ipad
//
// Created by 黄权浩 on 14-12-24.
// Copyright (c) 2014年 黄权浩. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//Do any additional setup after loading the view, typically from a nib.
//接受通知(注意名字要一样)
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(tongzhi2:) name:@"tongzhi" object:nil];
}
//需移除通知
- (void)dealloc
{
//mrc环境下
// [super dealloc];
// [[NSNotificationCenter defaultCenter] removeObserver:self name:@"tongzhi" object:nil];
//arc环境下
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"tongzhi" object:nil];
}
//通知方法
- (void)tongzhi2:(NSNotification *)sender
{
//取值
NSString *name = sender.object;
_lb.text = name;
}
- (void)_tongzhi{
//注册一个通知
[[NSNotificationCenter defaultCenter]postNotificationName:@"tongzhi" object:@"黄权浩"];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
当然在一个类里这么使用通知是错误的,
在a类注册在b类接收,这才是正确的。(通知是一对多。用于一些简单的传值是没有错误的,但是大型的程序还是少用较好)