如何测试* void指针是否指向Objective C中的NSObject

时间:2011-12-30 08:01:46

标签: objective-c testing nsobject void-pointers

我想知道,如果void指针实际上是一个客观的C对象指针(NSObject *),那么测试女巫是最好的做法......

- (id)initWithExecPath:(NSString*)executePath withArgs:(NSArray*)args identifier:(NSString*)identifierString contextInfo:(void*)contextInfo {

// I would like to check here if contextInfo is an NSObject

}

...谢谢

3 个答案:

答案 0 :(得分:2)

CocoaWithLove网站查看此帖子:

  

在这篇文章中,我将介绍一种测试任意方法的方法   pointer是指向有效Objective-C对象的指针。结果来自   测试不是绝对准确,可能会干扰gdb   调试如果指针不是有效的内存位置,所以不是   你经常想要做的事情(当然不是在制作中   码)。但它可以是一个方便的调试工具,当你盯着   盲目地记忆你没有分配。

答案 1 :(得分:0)

答案是,你不能为“是一个Objective-C对象”提供一般测试。任何这样的测试都必须检查对象的内部结构,因此根据定义是脆弱的。还有可能被传递一个看起来像Objective-C对象的随机内存但不是。例如最近被解除分配的对象。

答案 2 :(得分:0)

没有可靠的方法来确定这一点。此外,任何采用上下文指针的API都不应该关心它是什么或它指向什么,除了将它作为上下文传递给调用者之外,它不应该对它做任何事情。

也许你问错了问题;一旦你知道它是一个NSObject,你究竟想做什么?