ios – NSError对象已在第一次方法调用时填充

ios – NSError对象已在第一次方法调用时填充,第1张

概述我正在关注G. Lee的测试驱动的iOS开发书,并且遇到了我不理解的单元测试.首先,如果您需要更多代码,请立即告诉我. -(void)testDelegateNotifiedOfErrorWhenNewsBuilderFails{ MockNewsBuilder *builder = [MockNewsBuilder new]; builder.arrayToReturn = n 我正在关注G. Lee的测试驱动的iOS开发书,并且遇到了我不理解的单元测试.首先,如果您需要更多代码,请立即告诉我.

-(voID)testDelegateNotifIEdOfErrorWhenNewsBuilderFails{    MockNewsBuilder *builder = [MockNewsBuilder new];    builder.arrayToReturn = nil;    builder.errorToSet = underlyingError;    newsManager.newsBuilder = builder;    [newsManager receivednewsJsON:@"Fake Json"];    ...}-(voID)receivednewsJsON:(Nsstring *)objectNotation{    NSError *error = nil;    //  As you see error is nil and I am passing in a nil error.    NSArray *news = [_newsBuilder newsFromJsON:objectNotation error:&error];    ...}@implementation MockNewsBuilder-(NSArray *)newsFromJsON:(Nsstring *)objectNotation error:(NSError **)error{    // But once I arrive here,error is no longer nil.    // (NSError **) error = 0x00007fff5cb887f0 domain: @"Fake Json" - code: 0    ...}

如何自动设置错误?

更新:

感谢大家的积极讨论和建议.答案解释了调用方如何获得错误实例因为&,我明白这一点.我的问题仍然是为什么被调用方指向一个填充的NSError实例,即使它必须为零.我没有在newsFromJsON中设置错误实例:错误:那么它是如何在那里填充的?

我刚刚更改了[newsManager receivednewsJsON:@“Fake Json1”];和newsFromJsON中的错误实例:错误:立即反映出来
(NSError **)错误= 0x00007fff5b9b27f0域:@“假Json1” – 代码:0.它非常令人困惑……

@R_404_6120@ 这只是指针指针的指针.您正在将对引用错误对象& error的引用传递给方法 – (NSArray *)newsFromJsON:(Nsstring *)objectNotation错误:(NSError **)错误;

这将更新您传递的内存指针上的错误对象.

看到这是指向指针的概念.

更新:

你的错误对象是nil,是的,它是正确的.但是您没有将该错误对象传递给newsFromJsON方法,而是传递错误对象的内存地址(& error).这是错误对象的内存地址.
这就是你在newsFromJsON方法中获得非null值的原因.

还有一件事,你可以使用operator(* operator)的内容访问newsFromJsON方法中的原始对象
喜欢**错误=某事;

这将更新您在调用方法中声明的原始对象(NSError *错误).
在C或CPP或Objective-C中,&是运算符的地址,*是运算符的内容.

& obj – >给出obj的内存地址* obj – >给出obj中的内存地址的内容.

总结

以上是内存溢出为你收集整理的ios – NSError对象已在第一次方法调用时填充全部内容,希望文章能够帮你解决ios – NSError对象已在第一次方法调用时填充所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1043563.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-24
下一篇2022-05-24

发表评论

登录后才能评论

评论列表(0条)

    保存