gpt4 book ai didi

ios - NSInvocation 返回 nil

转载 作者:行者123 更新时间:2023-11-28 21:11:26 27 4
gpt4 key购买 nike

有谁知道如何将 NSInvocation 的参数设置为 nil ?我正在尝试使用 OCMock,我希望这种期望返回 nil。问题是调用该方法时我需要做一些其他事情,正如您在示例中看到的那样,这就是为什么我没有执行 andReturn:nil

我想这样做:

[[[myObject stub] andDo:^(NSInvocation *inv) {
[inv setReturnValue:Nil];
[inv invoke];
[self notify:kXCTUnitWaitStatusSuccess]; //Code that I need to execute
}] myMethod:OCMOCK_ANY];

但是我得到一个错误:

 *** Terminating app due to uncaught exception 
'NSInvalidArgumentException', reason: '-[NSInvocation setArgument:atIndex:]:
NULL address argument'

任何人都知道是否有另一种方法可以将其设置为零?还是不可能?

最佳答案

首先,您的代码没有任何意义。你应该在调用调用之前设置调用的参数,被调用的方法将读取你给它的参数,并设置返回值,然后你可以在调用调用后读取返回值。在调用它之前设置返回值是没有意义的,因为根据定义,“返回值”是作为调用结果“返回”的东西,并将在调用结束时设置,覆盖任何你之前设置。

为了解决您遇到的错误,对于所有 getArgumentsetArgumentgetReturnValuesetReturnValue您需要将指针传递给要读取或写入值的缓冲区的函数。这是因为参数和返回值可以是各种 C 类型、各种大小,所以您无法直接传递它。在这种情况下,似乎要读/写的值是一个对象指针,所以你需要创建一个对象指针类型的变量,设置为你想要的值(在你设置的情况下),然后你将指向此变量的指针传递给 getArgument/setArgument/getReturnValue/setReturnValue

关于ios - NSInvocation 返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25734065/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com