我新建一个类,使用ASIHttprequest 异步方法,但是不能回调requeFinished: 和requestFailed:方法。头文件如下m文件:
在viewControllr调用:
HttpRequest *request = [[HttpRequest alloc] init];
[request requestJson:kDoubanUrl]; 问了好几个人都不知道什么原因。就是不执行requestFinished: 和 requestFailed: 这两个回调函数
本人学习ios一个半月左右,求指教iOSASIHttprequest回调
在viewControllr调用:
HttpRequest *request = [[HttpRequest alloc] init];
[request requestJson:kDoubanUrl]; 问了好几个人都不知道什么原因。就是不执行requestFinished: 和 requestFailed: 这两个回调函数
本人学习ios一个半月左右,求指教iOSASIHttprequest回调
参考下这里:http://humin.me/asihttprequest_demo/
其实看一下回调接口的头文件,也有说明。
// These are the default delegate methods for request status
// You can use different ones by setting didStartSelector / didFinishSelector / didFailSelector
应该是内部默认实现了一些回调状态,如果要更改自己实现,则需要重新绑定。
参考下这里: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呀。
似乎这个开源库不支持ARC的工程,可以尝试找方法绕过。
比如:http://blog.csdn.net/w59879213/article/details/7190959
你的回调收不到,估计是异常引起的吧?没运行到就被释放掉了...
似乎这个开源库不支持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所以我更新知道为什么在自定义类中不行。
这里的request设置为ViewController的成员变量看看,局部变量也许离开作用域就被释放掉了,造成里面异常。
成了!太爱你!!非常感谢你的耐心回答!!!
真的是这个原因,这个回调是在- (void)viewDidLoad作用域以外才执行的??
因为你用的是异步回调机制,所以Http的请求是在另外的线程中运行,调用时并没有马上立即执行。又由于ARC的机制,导致HttpRequest *request离开作用域时,被Release了,由于这个对象没有被其他成员变量对象引用,引用计数为0就被释放掉了,造成后续的异常。
归根结底,就是变量的生命周期问题,弄清楚什么是时候被释放,也就解决问题了。
因为你用的是异步回调机制,所以Http的请求是在另外的线程中运行,调用时并没有马上立即执行。又由于ARC的机制,导致HttpRequest *request离开作用域时,被Release了,由于这个对象没有被其他成员变量对象引用,引用计数为0就被释放掉了,造成后续的异常。
归根结底,就是变量的生命周期问题,弄清楚什么是时候被释放,也就解决问题了。
你的回答说出了很多关键的地方,让我恍然大悟。
同时也让我浑身冒汗,这一个多月的学习基本是自学。
照着书做,要什么功能先去code4溜一圈下个demo搞定,满以为自己进步很快。
现在觉得就像是完全没有根据的理论,不能解决问题。也经不起推敲。
让我发现自己基础薄弱。还要拿更多的时间去补基础。
再次感谢你非常耐心的解答!