1

私はiPhone用の小さな静的ライブラリ(lib.a)を作成しており、ASIHTTPRequestを使用してデータの投稿などを管理しています。

メインの実装(@implementation BlaBla)がありますが、メインの.mファイルには、プライベートメソッド用の別の(@interface Foo)と(@implementation Foo)があります。

(@interface Foo)にASIHTTPRequestDelegateを実装しましたが、-(void)requestFinished:(ASIHTTPRequest *)requestを実装しましたが、このメソッドは実行されません!

私が何をしたとしても、それは機能しません。requestFinishedメソッドをログに記録するためにNSLogを追加しましたが、機能していません。

コード例:

@interface  ActionsManager : NSObject <ASIHTTPRequestDelegate>


+ (void)blabla; 


@end



@implementation ActionsManager 


+ (void)blabla{

    NSURL *requestUrl = [NSURL URLWithString:[NSString stringWithFormat:@"Bla.com/bla"]];

    BlaRequest = [[[ASIFormDataRequest alloc] initWithURL:requestUrl]autorelease];

    self = [BlaRequest delegate];
    [BlaRequest setPostValue:blabla forKey:@"bla"];
     [BlaRequest setRequestMethod:@"POST"];
    [BlaRequest startAsynchronous];


}



- (void)requestFinished:(ASIHTTPRequest *)request{
      NSLog(@"request finished");

}

- (void)requestStarted:(ASIHTTPRequest *)request{

    NSLog(@"request started");

}


@end


@implementation MainImplementation 



- (id)init
{    
    self = [super init];
    if (self) {

    }

    return self;

}

+ (void)bbb{

[ActionsManager blabla];

}

@end

私はどんな助けにもとても感謝します!

ところで、それはインスタンスメソッド(-)またはクラスメソッド(+)のせいでしょうか?

4

2 に答える 2

1

クラスメソッドから自分自身を呼び出す場合、コードは次のようになります。

@interface  ActionsManager : NSObject <ASIHTTPRequestDelegate>
- (void)blabla; 
@end

@implementation ActionsManager 


    - (void)blabla{

        NSURL *requestUrl = [NSURL URLWithString:[NSString stringWithFormat:@"Bla.com/bla"]];

        ASIFormDataRequest *blaRequest = [ASIFormDataRequest requestWithURL:requestUrl];

        blaRequest.delegate = self;
        [blaRequest setPostValue:@"blabla" forKey:@"bla"];
        [blaRequest setRequestMethod:@"POST"];
        [blaRequest startAsynchronous];


    }



    - (void)requestFinished:(ASIHTTPRequest *)request{
          NSLog(@"request finished");

    }

    - (void)requestStarted:(ASIHTTPRequest *)request{

        NSLog(@"request started");

    }


    @end


    @implementation MainImplementation 



    - (id)init
    {    
        self = [super init];
        if (self) {

        }

        return self;

    }

    + (ActionsManager *)bbb{

    ActionsManager *a = [ActionsManager new];
    [a blabla];
    return [a autorelease]; 
    }

    @end
于 2012-05-11T08:39:23.390 に答える
0

すべきではありません:

  BlaRequest.delegate = self;

それ以外の:

  self = [BlaRequest delegate];
于 2012-05-11T08:19:55.070 に答える