HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – NSError对象已在第一次方法调用时填充大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在关注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.它非常令人困惑……

解决方法

这只是指针指针的指针.您正在将对引用错误对象& 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对象已在第一次方法调用时填充所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。