main.m
//普通ios应用:下载数据-》解析数据 -》 显示数据
//协议代理回调作用:通过协议方法的返回值,将数据从代理传给委托
//场景:显示类想要显示从网上的数据
//分析:显示类不能去下载数据(不是因为没有能力而是不想去做
//需要一个专门下载数据的类,然后把数据给显示类)
//三要素:
//委托:显示类(想要下载数据)
//协议:下载网上的数据
//代理:下载类
#import <Foundation/Foundation.h>
#import "FJShowView.h"
#import "FJDownload.h"
int main(int argc, const char * argv[]) {
//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;
//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