升级到iOS5后ASIHttpRequest库问题及解决方法
来源:互联网 发布:cydia无法连接网络 编辑:程序博客网 时间:2024/04/30 05:40
最近iOS5出来以后,我把Xcode也更新到最新版本,运行一下以前的程序,发现很多都编译不通过,有些项目中用到ASIHttpRequest库,网上有高手发现这个类库在5.0的SDK下有问题,并给出了以下解决方案
原因是这样的:
ASIAuthenticationDialog这个内置对话框在网络有代理的情况下出现,然后无论点cancle或是login都不能dismiss。在4.3的SDK中完全没问题,在5.0的SDK中就会在Console中看到输出:
Unbalanced calls to begin/end appearance transitions for <ASIAutorotatingViewController:>
很明显示在sdk5中, 用这个库有问题,还有在停止调式的时候,程序会有异常产生。
于是很明显示是SDK5的变化影响了ASIHttpRequest的正常使用。于是我要fix这个问题,经过我研究发现,dismiss不起作用是由于UIViewController的parentViewController不再返回正确值了,返回的是nil,而在SDK5中被presentingViewController取代了。于是在ASIAuthenticationDialog.m中找到+(void)dismiss这个方法并修改为:
+ (void)dismiss { #if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_4_3 UIViewController *theViewController = [sharedDialog presentingViewController]; [theViewController dismissModalViewControllerAnimated:YES]; #else UIViewController *theViewController = [sharedDialog parentViewController]; [theViewController dismissModalViewControllerAnimated:YES]; #endif }
还有上面那个Console的错误提示,解决方法是,在ASIAuthenticationDialog.m中找到-(void)show这个方法,并把最后一行代码
[[self presentingController] presentModalViewController:self animated:YES];
修改为:
UIViewController *theController = [self presentingController]; #if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_4_3 SEL theSelector = NSSelectorFromString(@"presentModalViewController:animated:"); NSInvocation *anInvocation = [NSInvocation invocationWithMethodSignature:[[theController class] instanceMethodSignatureForSelector:theSelector]]; [anInvocation setSelector:theSelector]; [anInvocation setTarget:theController]; BOOL anim = YES; UIViewController *val = self; [anInvocation setArgument:&val atIndex:2]; [anInvocation setArgument:&anim atIndex:3]; [anInvocation performSelector:@selector(invoke) withObject:nil afterDelay:1]; #else [theController presentModalViewController:self animated:YES]; #endif
这下就可以正常运行了哟, 我的问题也解决了。关于ASIHttpRequest的其它方面,到目前为止还没发现问题。
- IOS5:升级到iOS5后ASIHttpRequest库问题及解决方法
- 升级到iOS5后ASIHttpRequest库问题及解决方法
- 升级到iOS5后ASIHttpRequest库问题及解决方法
- 升级到iOS5后ASIHttpRequest库问题及解决方法
- 升级到iOS5后ASIHttpRequest库问题及解决方法
- 升级到iOS5后ASIHttpRequest库问题及解决方法
- 升级到iOS5后ASIHttpRequest库问题及解决方法
- 个人总结:AS升级到3.0后遇到的问题及解决方法
- iphone升级到ios5后不能激活怎么办?
- iPhone 3GS升级到iOS5后不断重启
- ASIHTTPRequest开源类项目导入问题及解决方法
- ASIHTTPRequest开源类项目导入问题及解决方法
- ASIHTTPRequest开源类项目导入问题及解决方法
- 从vc6升级到vc7的一些问题及解决方法
- 从vc6升级到vc7的一些问题及解决方法
- 从vc6升级到vc7的一些问题及解决方法
- iPhone4升级到ios5教程
- LNMP架构php升级问题及解决方法 php-5.3.10升级到php-5.4.0
- 一片丹心育桃李 万般坚强站恶魔 ——挽救恩师生命,师生情搭起爱心桥
- PHP中的十个高级技巧
- java对cookie的操作
- HTML转义字符
- 使用PreparedStatement时,输出完整的SQL语句
- 升级到iOS5后ASIHttpRequest库问题及解决方法
- 发现NVCC编译器一个CUDA函数添加注释支持的问题
- php下的GUID用法,生成随机数
- Tokyo Cabinet和Tokyo Tyrant及PHP扩大包的安装
- 乔梁专访——让持续交付变为可能
- 一些不错的SAP学习网站
- iPhone 4S新功能Siri遇尴尬:不懂普通话
- linux面试题参考答案
- 编写软件架构文档说明,第 2 部分: 开发系统上下文