IOS开发之delegate与简单案例
来源:互联网 发布:青鸟软件开发培训 编辑:程序博客网 时间:2024/05/16 15:34
初学IOS开发的时候,很多人都会对delegate这个词感到陌生与好奇,delegate其实是一种模式称之为“代理模式”,接下来在篇文章中我们就来一起看一下delegate的用法吧!
在IOS中委托通过协议@protocol来实现,在协议中所声明的方法,不需要在协议中有实现的方法,是由他的实现类来实现(该类需要在头文件中包含‘<协议名>’).
首先先解释一下 “协议”与“委托”这两个是不一样的概念,因为我们在看代码的时候老是会看到他们出现在一起。举个例子什么是“委托”:好比我正在开车,但是开车可不能看手机微信呀,这样很危险,所以我就叫坐在车里的小乔帮我看微信,这样下来我就可以正常开车,当小乔看完微信后就告诉我是里面是什么内容。这就是委托,小乔是我的委托对象。
“协议”protocol:是用来定义对象的属性和行为,有点类似于C++的虚函数。它有两个关键字@required与@optional,前者表示这个协议必须要写的方法,后者表示方法可选。
下面是一个简单的例子。
#import <UIKit/UIKit.h>#import "exampleClass.h"@interface MainViewController : UIViewController<myDelegate>@end============================//// MainViewController.m// testMyDelegate//// Created by silicon on 14-5-4.// Copyright (c) 2014年 silicon. All rights reserved.//#import "MainViewController.h"@interface MainViewController ()@end@implementation MainViewController- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self;}- (void)viewDidLoad{ [super viewDidLoad]; // Do any additional setup after loading the view from its nib. exampleClass *example = [[exampleClass alloc] init]; [example testMyDelegate]; example.delegate = self;}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}- (void)dealloc{ [super dealloc];}- (void)test{ NSLog(@"hello delegate");}@end===========================================#import <Foundation/Foundation.h>@protocol myDelegate- (void)test;@end@interface exampleClass : NSObject{ NSObject<myDelegate> *delegate;}@property (strong, nonatomic) NSObject<myDelegate> *delegate;- (void)testMyDelegate;@end==========================================#import "exampleClass.h"@implementation exampleClass@synthesize delegate;//- (id)init{ [super init]; return self;}- (void)testMyDelegate{ [self.delegate test];}@end以上就是代码示例。
个人认为使用委托的好处就在于,可以在类中实现消息的传递,避免了类与类的耦合度过高。利用委托赋值更加安全可控,委托赋值在不暴露自己类的属性的前提下就可以对自己进行赋值。
接下来我会写一篇有关代理模式原理的文章希望大家指正。
0 0
- IOS开发之delegate与简单案例
- IOS开发之delegate与简单案例
- IOS开发之delegate与简单案例
- iOS 开发学习之 delegate
- Delegate简单案例
- iOS开发之protocol和delegate
- ios开发之delegate那点事儿
- ios开发之delegate那点事儿
- iOS开发之protocol和delegate
- iOS开发之protocol和delegate
- iOS开发之protocol和delegate
- iOS开发之protocol和delegate
- IOS开发之delegate,NSTimer,UIAlertView
- iOS开发之UIApplication和delegate
- iOS开发之delegate设计模式
- iOS开发之protocol和delegate
- iOS开发之protocol和delegate
- IOS开发之----协议与委托(Protocol and Delegate) 实例解析
- 出阁前要学习的功课
- Linux mount命令详解
- 也谈delete的双重删除
- HDOJ 1536 S-Nim SG函数求法
- mongoDB使用mapreduce实现简单的统计功能
- IOS开发之delegate与简单案例
- 保护模式总结(四)——分页机制
- 图像的形态学处理
- WIN32汇编-(1)
- git命令
- cocos2dx-3.0rc2 build on Eclipse
- jquery 大于号的使用
- 一个简单的Gephi Demo
- 英文操作系统中的乱码问题及其它