我想知道,如果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
}
...谢谢
答案 0 :(得分:2)
从CocoaWithLove网站查看此帖子:
在这篇文章中,我将介绍一种测试任意方法的方法 pointer是指向有效Objective-C对象的指针。结果来自 测试不是绝对准确,可能会干扰gdb 调试如果指针不是有效的内存位置,所以不是 你经常想要做的事情(当然不是在制作中 码)。但它可以是一个方便的调试工具,当你盯着 盲目地记忆你没有分配。
答案 1 :(得分:0)
答案是,你不能为“是一个Objective-C对象”提供一般测试。任何这样的测试都必须检查对象的内部结构,因此根据定义是脆弱的。还有可能被传递一个看起来像Objective-C对象的随机内存但不是。例如最近被解除分配的对象。
答案 2 :(得分:0)
没有可靠的方法来确定这一点。此外,任何采用上下文指针的API都不应该关心它是什么或它指向什么,除了将它作为上下文传递给调用者之外,它不应该对它做任何事情。
也许你问错了问题;一旦你知道它是一个NSObject,你究竟想做什么?