2011-05-04 92 views
0

獲取例外,我的新目標C.我移植的cpp的代碼目的C.在函數調用目標C

pMsg->TxCreateImage((INT8U*)m_cData.m_abTxMsgImage,m_cData.m_nTxImageSize); 

TxCreateImage((INT8U*)pData,int uLen) 
{ 
func definition; 
} 

TxCreateImage是一個函數調用。 m_cData是另一個類的對象。

這個Objective C等價物是否正確。

Data* pMsg = [[Data alloc]init]; 
Ds* m_cData; 

[pMsg TxCreateImage:(int *)[m_cData m_abTxMsgImage] :(int)[m_cData m_nTxImageSize]]; 

- (void)TxCreateImage:(int*)pData :(int)uLen 
{ 
//func definition; 
} 

我越來越像例外,

-[Packet m_nTxImageSize]: unrecognized selector sent to instance 0x100831e00 
2011-05-04 17:11:07.756 Test-packetCreation[4633:a0f] *** Terminating app due to uncaught 
exception 'NSInvalidArgumentException', reason: '-[Ds m_nTxImageSize]: unrecognized 
selector sent to instance 0x100831e00' 
+0

此外,在objective-c中,我們傾向於將描述放在我們的方法簽名中。即'[object doSuperCoolMethodUsingInt:我withString:name];' - 它只是讓代碼更具可讀性:) – 2011-05-04 11:57:38

+0

這不會編譯。你有沒有在瀏覽器中輸入它,或者這實際上是你擁有的?例如[m_cData m_nTxImageSize]] – hooleyhoop 2011-05-04 12:02:52

+0

@ fakeAccount22:對不起,我錯誤地把')'在編輯時。 – Angus 2011-05-04 12:09:39

回答

2

需要初始化m_cData一個。而且我不太確定傳遞一個指向整數的指針;如果這不起作用,請嘗試查看m_nTxImageSize的返回類型;

無法識別的選擇器裝置,它不能訪問/查看由m_nTxImageSize

+0

sorrry我在這裏犯了一個錯誤,m_abTxImage和m_nTxImageSize是變量。如何將一個類的變量傳遞給另一個類。 – Angus 2011-05-04 12:08:44

1

稱爲巨大差異速滑運動員的肌肉Objective-C和C++的方法:

=>信息發送的後期綁定。

你應該養成那種錯誤的習慣。 在你身上看看Ds班級定義,看看你是否有訪問者-m_abTxMsgImage。 請記住,所有實例變量(memeber for C++球員)都受到保護。

如果您想公開您必須使用@public指令。 請參閱here

此外,您的方法-TxCreateImage::的命名不是在objective-c中命名方法的最佳方法。

喜歡的東西一樣-createImageText:size:

訪問器設置方法被命名爲setMyInstVar和get方法myInstVar。另外,將m_添加到實例變量中並不常見。

訪問者可以使用@synthesize指令創建自動匹配,該指令遵循上述的慣例。

+0

將會改變,並使我的代碼像您所說的那樣可讀。 – Angus 2011-05-04 13:04:34