我新建一个类,使用ASIHttprequest 异步方法,但是不能回调requeFinished: 和requestFailed:方法。头文件如下m文件:
在viewControllr调用:
HttpRequest *request = [[HttpRequest alloc] init]; 
[request requestJson:kDoubanUrl]; 问了好几个人都不知道什么原因。就是不执行requestFinished: 和 requestFailed: 这两个回调函数
本人学习ios一个半月左右,求指教iOSASIHttprequest回调

解决方案 »

  1.   


    参考下这里:http://humin.me/asihttprequest_demo/
    其实看一下回调接口的头文件,也有说明。
    // These are the default delegate methods for request status
    // You can use different ones by setting didStartSelector / didFinishSelector / didFailSelector
    应该是内部默认实现了一些回调状态,如果要更改自己实现,则需要重新绑定。
      

  2.   


    参考下这里:http://humin.me/asihttprequest_demo/
    其实看一下回调接口的头文件,也有说明。
    // These are the default delegate methods for request status
    // You can use different ones by setting didStartSelector / didFinishSelector / didFailSelector
    应该是内部默认实现了一些回调状态,如果要更改自己实现,则需要重新绑定。
    先感谢你抽时间回答,谢谢。
    之前就试过上面的方法,不行。现在再试了下,还是不行。。
    程序运行到后面会报EXC_BAD_ACCESS 错误。对象提前释放了?但是我用的ARC呀。
      

  3.   


    似乎这个开源库不支持ARC的工程,可以尝试找方法绕过。
    比如:http://blog.csdn.net/w59879213/article/details/7190959
    你的回调收不到,估计是异常引起的吧?没运行到就被释放掉了...
      

  4.   


    似乎这个开源库不支持ARC的工程,可以尝试找方法绕过。
    比如:http://blog.csdn.net/w59879213/article/details/7190959
    你的回调收不到,估计是异常引起的吧?没运行到就被释放掉了...
    我自己键的工程是arc,用这个非ARC库加了 -fno-objc-arc,才能使用。
    EXC_BAD_ACCESS 错误是在viewController的
    - (void)viewDidLoad{
    .....
    HttpRequest *request = [[HttpRequest alloc] init]; 
    [request requestJson:kDoubanUrl]; //没有调用HttpRequest中的回调函数。
    .........
    }
    执行完以后报错。因为很多地方要用到这个异步方法,所以我才写进自定义类中。
    直接写在viewController中:像http://blog.csdn.net/w59879213/article/details/7190959中一样。
    能回调,没有问题。因为初学ios所以我更新知道为什么在自定义类中不行。
      

  5.   

    把你的HttpRequest *request = [[HttpRequest alloc] init]; 
    这里的request设置为ViewController的成员变量看看,局部变量也许离开作用域就被释放掉了,造成里面异常。
      

  6.   


    成了!太爱你!!非常感谢你的耐心回答!!!
    真的是这个原因,这个回调是在- (void)viewDidLoad作用域以外才执行的??
      

  7.   


    因为你用的是异步回调机制,所以Http的请求是在另外的线程中运行,调用时并没有马上立即执行。又由于ARC的机制,导致HttpRequest *request离开作用域时,被Release了,由于这个对象没有被其他成员变量对象引用,引用计数为0就被释放掉了,造成后续的异常。
    归根结底,就是变量的生命周期问题,弄清楚什么是时候被释放,也就解决问题了。
      

  8.   


    因为你用的是异步回调机制,所以Http的请求是在另外的线程中运行,调用时并没有马上立即执行。又由于ARC的机制,导致HttpRequest *request离开作用域时,被Release了,由于这个对象没有被其他成员变量对象引用,引用计数为0就被释放掉了,造成后续的异常。
    归根结底,就是变量的生命周期问题,弄清楚什么是时候被释放,也就解决问题了。
    你的回答说出了很多关键的地方,让我恍然大悟。
    同时也让我浑身冒汗,这一个多月的学习基本是自学。
    照着书做,要什么功能先去code4溜一圈下个demo搞定,满以为自己进步很快。
    现在觉得就像是完全没有根据的理论,不能解决问题。也经不起推敲。
    让我发现自己基础薄弱。还要拿更多的时间去补基础。
    再次感谢你非常耐心的解答!