您的位置:首页 > 其它

OC协议代理的回调功能

2016-03-28 00:00 239 查看
摘要: 一个页面负责显示数据,另一个页面负责下载数据返回给显示页面

main.m

//普通ios应用:下载数据-》解析数据 -》 显示数据
//协议代理回调作用:通过协议方法的返回值,将数据从代理传给委托

//场景:显示类想要显示从网上的数据
//分析:显示类不能去下载数据(不是因为没有能力而是不想去做
//需要一个专门下载数据的类,然后把数据给显示类)
//三要素:
//委托:显示类(想要下载数据)
//协议:下载网上的数据
//代理:下载类

#import <Foundation/Foundation.h>
#import "FJShowView.h"
#import "FJDownload.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
//1。创建一个显示对象
FJShowView *show = [[FJShowView alloc]init];
//2.创建一个下载对象
FJDownload *down = [[FJDownload alloc]init];
//3.设置代理
show.delegate = down;
//4.完成协议内容;
[show needShow];
}
return 0;
}

FJShowView.h

#import <Foundation/Foundation.h>
//2.协议
@protocol downLoadDelegate <NSObject>

- (NSData *)downLoadDataWithURL:(NSString *)urlString;

@end

//1.委托
@interface FJShowView : NSObject

@property (nonatomic,weak)id<downLoadDelegate> delegate;

//需要显示的时候,要求代理去下载数据
- (void) needShow;

@end

FJShowView.m

#import "FJShowView.h"

@implementation FJShowView

- (void)needShow{
if ([_delegate respondsToSelector:@selector
(downLoadDataWithURL:)]) {

NSData *data = [_delegate downLoadDataWithURL:@"http://m2.qiushibaike.com/article/list/latest?page=1&count=30&rqcnt=21&r=a1ef5f561429944164282"];
NSLog(@"显示下载数据:%@",data);

}
}

@end

#import <Foundation/Foundation.h>

#import "FJShowView.h"
@interface FJDownload : NSObject<downLoadDelegate>

@end

FJDownLoad.m

#import "FJDownload.h"

@implementation FJDownload
- (NSData *)downLoadDataWithURL:(NSString *)urlString{

//创建统一资源定位符对象
// NSURL *url = [NSURL URLWithString:urlString ];
// NSData *data = [NSData dataWithContentsOfURL:url];
//
// return data;

NSString *str = @"ea";
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
return data;

}
@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  OC回调