仮想ザッカーバーグの試験(笑)
Life is beautifulにこんな記事があったので(笑)、ちょっと挑戦してみる事に
HTTPLoader.h
//
// HTTPLoader.h
// HTTPLoader
//
#importtypedef void (^HTTPLoaderComplete)(NSData* data, NSError *error);
@interface HTTPLoader : NSObject+ (void)loadAsync:(NSURLRequest*)request complete:(HTTPLoaderComplete)loaderComplete;
@end
HTTPLoader.m
//
// HTTPLoader.m
// HTTPLoader
//
#import "HTTPLoader.h"@implementation HTTPLoader
+ (void)loadAsync:(NSURLRequest*)request complete:(HTTPLoaderComplete)loaderComplete
{
dispatch_queue_t g_queue = dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async (g_queue, ^{
NSLog (@"Execute g_queue");NSURLResponse* response = nil;
NSError* error = nil;
NSData* data = [NSURLConnection sendSynchronousRequest:request
returningResponse:&response
error:&error];
loaderComplete (data, error);
});
}
@end
HTTPLoaderTest.h
//
// HTTPLoaderTests.h
// HTTPLoaderTests
//
#import
#import "HTTPLoader.h"@interface HTTPLoaderTests : SenTestCase
- (void)testloadAsync;
@end
HTTPLoaderTest.m
全然45分で終わらなかったのと、関数の引数がblockだった場合の処理の仕方がうる覚え(というか作法がわかってない)だった。。。ので出直しと言う事で。
//
// HTTPLoaderTests.m
// HTTPLoaderTests
//#import "HTTPLoaderTests.h"
@implementation HTTPLoaderTests
- (void)setUp
{
[super setUp];
// Set-up code here.
}- (void)tearDown
{
// Tear-down code here.
[super tearDown];
}- (void)excute:(NSString*)url
{
NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];
[HTTPLoader loadAsync:request
complete:^(NSData* data, NSError *error) {
if (data)
{
NSLog (@"Success: process the data [URL = %@]", url);
}
else
{
NSLog (@"Error: process the error [URL = %@]", url);
}
}];
}- (void)testloadAsync
{
[self excute:@"http://www.google.co.jp"];
[self excute:@"http://d.hatena.ne.jp/ke-16"];
[self excute:@"http://takoikasaru"];
}
@end
これがクラスの中身としては一番シンプルな形だと思うのですが。合ってる???