古いバージョンとか新しいバージョンのことは気にしない。
libxmlの前に NSURLConnection を使ってサーバにデータを取りにいく必要があるのでそっちから進める。
けど、説明は簡単に終わらせる。
NSURLConnection のメソッド initWithRequest:delegate: を呼び出すとサーバに接続して結果を返してくれる。
そんで、結果を返してくれる度にその結果に対応した NSURLConnection のデリゲートメソッドが実行されるようになってる。
@implementation RSSImporter
/**
とりあえず init に NSURLConnection の処理を書いてみる。
*/
- (id)init {
self = [super init];
if (self != nil) {
NSString *feedURL = @"http://eyesrobe.blogspot.com/feeds/posts/default?alt=rss";
NSURLRequest *requestURL = [NSURLRequest requestWithURL:[NSURL URLWithString:feedURL]];
NSURLConnection *urlConnection = [[[NSURLConnection alloc] initWithRequest:requestURL delegate:self] autorelease];
if (urlConnection == nil) {
NSLog(@"error");
}
}
return self;
}
- (void)dealloc {
[super dealloc];
}
#pragma mark NSURLConnection Delegate methods
//
// ここから下のメソッドが、NSURLConnectionのデリゲートメソッド
//
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
// データ受信
NSLog(@"受信中(データは分割されて受信される)");
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
// 受信完了
NSLog(@"受信完了");
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
// 受信エラー
NSLog(@"エラー");
}
@end
NSURLConnection の説明終わり。
ここまでで取り敢えず実行させてみたい。
実行させるにはどこかでRSSImporterのインスタンスを作らないとなので、作る。
{YourProject}AppDelegate.m/.h でやることにする。
//
// {YourProject}AppDelegate.m
// コードの{YourProject}は自分のプロジェクト名に置き換えてね。
//
// ここでは、RSSImporterクラスの使い方の説明しようとしてるだけなの
// で、「// これ追加」ってところを自分の環境にあわせて追加すること。
//
#import <UIKit/UIKit.h>
@class {YourProject}ViewController;
@class RSSImporter; // これ追加
@interface {YourProject}AppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
{YourProject}ViewController *viewController;
RSSImporter *importer; // これ追加
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet {YourProject}ViewController *viewController;
@property (nonatomic, retain) RSSImporter *importer; // これ追加
@end
//
// {YourProject}AppDelegate.h
// コードの{YourProject}は自分のプロジェクト名に置き換えてね
//
// ここでは、RSSImporterクラスの使い方の説明しようとしてるだけなの
// で、「// これ追加」ってところを自分の環境にあわせて追加すること。
//
#import "{YourProject}AppDelegate.h"
#import "{YourProject}ViewController.h"
#import "RSSImporter.h" // これ追加
@implementation {YourProject}AppDelegate
@synthesize window;
@synthesize viewController;
@synthesize importer; // これ追加
#pragma mark -
#pragma mark Application lifecycle
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
importer = [[RSSImporter alloc] init]; // これ追加
[window addSubview:viewController.view];
[window makeKeyAndVisible];
return YES;
}
~(略)~
- (void)dealloc {
[importer release]; // これ追加
[viewController release];
[window release];
[super dealloc];
}
@end
編集終わったら、ビルドと実行を行う。
そうするとコンソールに、
[Session started at 2010-09-30 15:21:35 +0900.]
2010-09-30 15:21:39.928 Foo[1715:207] 受信中(データは分割されて受信される)
2010-09-30 15:21:39.931 Foo[1715:207] 受信中(データは分割されて受信される)
2010-09-30 15:21:39.962 Foo[1715:207] 受信中(データは分割されて受信される)
2010-09-30 15:21:39.964 Foo[1715:207] 受信中(データは分割されて受信される)
2010-09-30 15:21:39.966 Foo[1715:207] 受信中(データは分割されて受信される)
2010-09-30 15:21:39.967 Foo[1715:207] 受信完了
な感じで表示さるので、これで NSURLConnection については理解できたということにする。
0 件のコメント:
コメントを投稿