大佬教程收集整理的这篇文章主要介绍了ios – NSError对象已在第一次方法调用时填充,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
-(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.它非常令人困惑……
这将更新您传递的内存指针上的错误对象.
看到这是指向指针的概念.
更新:
你的错误对象是nil,是的,它是正确的.但是您没有将该错误对象传递给newsFromJSON方法,而是传递错误对象的内存地址(& error).这是错误对象的内存地址.
这就是你在NewsFromJSON方法中获得非NULL值的原因.
还有一件事,你可以使用operator(* operator)的内容访问newsFromJSON方法中的原始对象
喜欢**错误=某事;
这将更新您在调用方法中声明的原始对象(NSError *错误).
在C或CPP或Objective-C中,&是运算符的地址,*是运算符的内容.
& obj – >给出obj的内存地址* obj – >给出obj中的内存地址的内容.
以上是大佬教程为你收集整理的ios – NSError对象已在第一次方法调用时填充全部内容,希望文章能够帮你解决ios – NSError对象已在第一次方法调用时填充所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。