成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

了解Objective-C重載時要注意一個問題

移動開發(fā) iOS
本文介紹的是了解Objective-C下重載時要注意一個問題,相信大家對Objective-C已經(jīng)很不陌生了,我們先來看詳細內(nèi)容。

了解Objective-C重載時要注意一個問題是本文要介紹的內(nèi)容,不多說,直接進入話題,用ASyncSocket的來做一個簡單TCP的客戶端程序.很簡單的程序。就是調(diào)AsyncSocket的ConnectToHost去聯(lián)接服務(wù)器。

  1.     
  2. NSString * host = @"192.168.2.151";  
  3.      int port = 35000;  
  4.        
  5.      asyncSocket = [[AsyncSocket alloc] initWithDelegate:self];   
  6.     NSError *err = nil;   
  7.  
  8.      
  9.     if(![asyncSocket connectToHost:host on:port error:&err])   
  10.     {   
  11.         NSLog(@"Error: %@", err);   
  12.     }  

整個程序可以編譯運行。代碼一運行到connectToHost就提示:

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

在connectToHost里設(shè)了斷點也無法進入。加了N多NSLog也不顯示。閱讀ASyncSocket.***突然靈光一現(xiàn).是不是方法重載的問題?

因為原有的方法定義是

  1. - (BOOL)connectToHost:(NSString*)hostname onPort:(UInt16)port error:(NSError **)errPtr; 

經(jīng)過調(diào)整代碼發(fā)現(xiàn),主要是其參數(shù)符號onPort的原因。在方法定義時參數(shù)符號起注釋作用,同時又是一個重載標(biāo)志,在調(diào)用方法時,參數(shù)符號必須原封不動的寫在調(diào)用方法之上。而我把onPort寫成on,造成找不到相應(yīng)的方法。
 
所以報錯 unrecognized selector sent to 0x3e6f250。其中這個0x3e6f250就是asyncSocket這個類指針地址
因此簡單修改如下代碼,成功運行。

  1. NSString * host = @"192.168.2.151";  
  2.     unsigned short port = 35000;  
  3.        
  4.      asyncSocket = [[AsyncSocket alloc] initWithDelegate:self];   
  5.     NSError *err = nil;   
  6.  
  7.      
  8.     if(![asyncSocket connectToHost:host onPort:port error:&err])   
  9.     {   
  10.         NSLog(@"Error: %@", err);   
  11.     } 

當(dāng)你看到unrecognized selector sent to 這樣的運行提示你的***個反應(yīng)應(yīng)該是對應(yīng)的方法沒有找到,如果是方法名寫錯一般在編譯階段即可發(fā)現(xiàn)。但是如果重載的方法,特別是參數(shù)符號錯誤的提示比較隱蔽。

不過一般的編譯器也會有相應(yīng)警告,事后仔細查看上述錯誤的編譯時也會警告:

  1. warnning:'AsyncSocket' may be not respond to '-connectToHost:on:err'  

基本有這個警告你可以坐實是類方法沒有找到原因

小結(jié):了解Objective-C重載時要注意一個問題的內(nèi)容介紹完了,希望本文對你有所幫助!

責(zé)任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-08-05 15:56:03

Objective-C 消息 函數(shù)

2013-08-21 14:57:42

objective-c問題

2011-08-04 13:55:10

Cocoa Objective- 文件

2012-07-04 14:40:37

Ajax

2011-08-01 11:37:41

iPhone Objective- 內(nèi)存

2011-07-22 15:10:51

Objective-C 文件

2016-11-24 15:54:06

androidJSONObject

2017-02-13 16:47:13

iOSDSL開發(fā)

2011-08-02 15:55:31

Objective-C NSAutorele

2015-06-08 10:02:40

swiftOC兼容

2011-08-10 18:07:29

Objective-C反射

2013-06-20 10:40:32

Objective-C實現(xiàn)截圖

2013-03-27 12:54:00

iOS開發(fā)Objective-C

2011-05-11 15:58:34

Objective-C

2011-05-11 11:20:26

Objective-C

2016-12-26 18:51:34

AndroidJavascriptJSONObject

2011-08-16 13:34:23

Objective-C歸檔

2011-07-22 15:42:39

Objective-C UIView 內(nèi)存

2011-07-26 10:50:50

Objective-C Selector

2011-05-11 13:54:08

Objective-C
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久精品无码一区二区三区 | 国产精品一区二区久久久久 | 亚洲xx在线 | 人人干人人干人人 | 中文字幕一区二区三区不卡 | 免费在线精品视频 | 欧美久久久久久久 | 日韩色视频 | 久久精品aaa | 国产精品一区二区三区四区 | 午夜精品在线 | 麻豆亚洲| 国产精品片aa在线观看 | 成人性生交大片免费看r链接 | 国产成人免费一区二区60岁 | 久久久成人网 | 精品视频亚洲 | 日韩久久久久久 | 别c我啊嗯国产av一毛片 | 亚洲国产一区二区三区在线观看 | 国产真实精品久久二三区 | 国产91网站在线观看 | 国产欧美精品一区二区色综合朱莉 | 夜夜操天天艹 | 国产欧美一区二区精品久导航 | 国产成人精品视频在线观看 | 国产精品久久久久久久白浊 | 国产成人免费视频 | av香蕉 | 国产97在线视频 | 91亚洲精品国偷拍自产在线观看 | 欧美一区二区大片 | 一二区视频 | 久久天天 | 欧美成人精品激情在线观看 | 中文字幕亚洲一区二区va在线 | 亚洲国产精品一区二区三区 | 日韩欧美网 | 久久久激情 | 91网站视频在线观看 | 国产三区精品 |