iOS POS之 AsyncSocket release环境运行崩溃问题
来源:互联网 发布:sql merge into 语法 编辑:程序博客网 时间:2024/05/12 10:43
最近在做POS刷卡,报文是采用TCP传输,用的是AsyncSocket 三方库传输的字节流。
遇到的一个问题就是在release环境下,AsyncSocket 请求会直接崩溃。试了各种办法,最后找到了解决方法,在这里分享给大家。
首先崩溃的地方是
- (void)doStreamOpen
{
if ((theFlags &kDidCompleteOpenForRead) && (theFlags &kDidCompleteOpenForWrite))
{
NSError *err =nil;
// Get the socket
if (![selfsetSocketFromStreamsAndReturnError: &err])
{
NSLog (@"AsyncSocket %p couldn't get socket from streams, %@. Disconnecting.",self, err);
[selfcloseWithError:err];
return;
}
// Stop the connection attempt timeout timer
[selfendConnectTimeout];
if ([self.theDelegaterespondsToSelector:@selector(onSocket:didConnectToHost:port:)])
{
[self.theDelegateonSocket:selfdidConnectToHost:[selfconnectedHost]port:[selfconnectedPort]];
}
// Immediately deal with any already-queued requests.
[selfmaybeDequeueRead];
[selfmaybeDequeueWrite];
}
}
由于是提示的是内存地址原因,我想了想可能是没在主线程中运行,所以我在调用这个方法的地方在主线程中执行。
在这里我搜索了一下调用这个方法(doStreamOpen)的地方,修改如下:
case kCFStreamEventOpenCompleted:
theFlags |=kDidCompleteOpenForRead;
[selfperformSelectorOnMainThread:@selector(doStreamOpen)withObject:nilwaitUntilDone:YES];
//[self doStreamOpen];
break;
应该是放在主线程里执行就行了。
如果还是不行,那么我做的另一个变动是把delegate设置成了属性
@property(nonatomic,assign)id<AsyncSocketDelegate> theDelegate;
注意要在
@protocol AsyncSocketDelegate 后面加上 <NSObject> 要不然会报找不到委托方法的错误。
如果还是不行,欢迎来跟我一起讨论 ———— LC
- iOS POS之 AsyncSocket release环境运行崩溃问题
- Release版本崩溃问题
- iOS之AsyncSocket使用心得
- iOS开发之AsyncSocket使用
- 关于Debug版正常运行,release版运行崩溃的问题
- QTreeView可编辑功能 在Debug状态可以运行在Release下崩溃的问题
- Windows环境下Release崩溃定位
- IOS AsyncSocket
- IOS---AsyncSocket
- iOS AsyncSocket
- IOS 开发之Cocoa AsyncSocket学习 .
- ios网络编程之(AsyncSocket)
- iOS开发之AsyncSocket使用教程
- iOS开发之AsyncSocket使用教程
- iOS 开放之asyncsocket 的 简明教程
- iOS开发之AsyncSocket使用教程
- ios开发之即时通讯socket(AsyncSocket)
- iOS之Socket的使用-AsyncSocket
- 线程安全
- 从HttpClient3迁移到HttpClient4
- bugzilla中的bug删除和用户禁用
- C#的DLLspy超犀利后门
- Java环境变量配置
- iOS POS之 AsyncSocket release环境运行崩溃问题
- 2012年5月SAT香港真题解析
- NAND Flash的坏块管理设计
- Linux Min装机--配置Tomcat开机启动
- Win7小知识
- 【Android Studio探索之路系列】之一:Android Studio开篇
- Toolbar的高级使用
- 如何吧Python文件转换为exe文件 pyinstaller篇
- 项目管理工具到底应该为谁服务?