
-(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对象已在第一次方法调用时填充所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)