2011-05-04 61 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