Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1682788
  • 博文数量: 311
  • 博客积分: 7778
  • 博客等级: 少将
  • 技术积分: 4186
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-09 19:59
个人简介

蓝点工坊(http://www.bluedrum.cn) 创始人,App和嵌入式产品开发。同时也做相应培训和外包工作。 详细介绍 http://pan.baidu.com/s/1y2g88

文章存档

2012年(3)

2011年(115)

2010年(170)

2009年(23)

分类: 嵌入式

2011-01-04 00:59:05

Andrew Haung
 
  用ASyncSocket的来做一个简单TCP的客户端程序.很简单的程序。就是调AsyncSocket的ConnectToHost去联接服务器
  

NSString * host = @"192.168.2.151";
     int port = 35000;
     
     asyncSocket = [[AsyncSocket alloc] initWithDelegate:self];
    NSError *err = nil;

   
    if(![asyncSocket connectToHost:host on:port error:&err])
    {
        NSLog(@"Error: %@", err);
    }


整个程序可以编译运行。代码一运行到connectToHost就提示:
  

*** -[AsyncSocket connectToHost:on:error:]: unrecognized selector sent to instance 0x3e6f250 2011-01-03 23:24:19.423 HelloiPhone[305:20b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: ' *** -[AsyncSocket connectToHost:on:error:]: unrecognized selector sent to instance 0x3e6f250'


在connectToHost里设了断点也无法进入。加了N多NSLog也不显示。阅读ASyncSocket.最后突然灵光一现.是不是方法重载的问题?

因为原有的方法定义是
 - (BOOL)connectToHost:(NSString*)hostname onPort:(UInt16)port error:(NSError **)errPtr;

   经过调整代码发现,主要是其参数符号onPort的原因。在方法定义时参数符号起注释作用,同时又是一个重载标志,在调用方法时,参数符号必须原封不动的写在调用方法之上。而我把onPort写成on,造成找不到相应的方法。
  
所以报错 unrecognized selector sent to 0x3e6f250其中这个0x3e6f250就是asyncSocket这个类指针地址
因此简单修改如下代码,成功运行。

NSString * host = @"192.168.2.151";
    unsigned short port = 35000;
     
     asyncSocket = [[AsyncSocket alloc] initWithDelegate:self]; 
    NSError *err = nil; 

   
    if(![asyncSocket connectToHost:host onPort:port error:&err]) 
    { 
        NSLog(@"Error: %@", err); 
    }



 结论:
   当你看到unrecognized selector sent to 这样的运行提示你的第一个反应应该是对应的方法没有找到,如果是方法名写错一般在编译阶段即可发现。但是如果重载的方法,特别是参数符号错误的提示比较隐蔽。
   不过一般的编译器也会有相应警告,事后仔细查看上述错误的编译时也会警告:
   warnning:'AsyncSocket' may be not respond to '-connectToHost:on:err' 
基本有这个警告你可以坐实是类方法没有找到原因
   

阅读(2185) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-03-08 20:31:19

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com