大佬教程收集整理的这篇文章主要介绍了ios – 如何使用将指向对象的指针作为参数的方法创建NSInvocation对象,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
- (BOOL)writeToFile:(NSString *)path options:(NSDataWriTingOptions)mask error:(NSError **)errorPtr
我强调,我会像这样设置我的调用
NSData *myData = [[NSData alloc] init]; SEL writeToFileSELEctor = @SELEctor(writeToFile:options:error:); NSMethodSignature *signature = [NSData instanceMethodSignatureForSELEctor:writeToFileSELEctor]; NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; [invocation setTarget:myData]; [invocation setSELEctor:writeToFileSELEctor]; NSString *String = [NSString StringWithFormat:@"long cat"]; NSDataWriTingOptions *dataOptions; *dataOptions = NSDataWriTingFileProtectionComplete; [invocation setArgument:&String aTindex:2]; [invocation setArgument:&dataOptions aTindex:3];
对于writeToFile:选项:错误:最后一个参数期望接收指针而不是对象.因此,执行以下操作无效 –
NSError *err = nil; [invocation setArgument:&err aTindex:4];
似乎合乎逻辑的是,解决方案可能是创建指向指针的指针,但这会导致编译器警告.我不确定如何正确执行,而不是创建内存管理问题.
正如您所指出的,方法签名需要NSError **作为其最后一个参数(索引4).所以,你需要声明一个,但有一些问题.
NSError ** errorPointer
给你一个指向NSError变量的变量.但是,既然你没有告诉它指向任何变量,它指的是零.因此,当您触发调用时,选择器将无法更改错误指针指向的变量.换句话说,它就像调用[myData writeToFile:String options:dataOptions error:NULL].
因此,您还需要声明一个NSError变量,并将其地址指定为您的errorPointer应指向的变量:
NSError *error; NSError **errorPointer = &error;
现在您可以将errorPointer作为参数传递,如果在调用方法时出现问题,您将能够稍后检查它.查看this post on NSInvocation以获得更多帮助(帽子提示到Mark Dalrymple指出博客文章)
以上是大佬教程为你收集整理的ios – 如何使用将指向对象的指针作为参数的方法创建NSInvocation对象全部内容,希望文章能够帮你解决ios – 如何使用将指向对象的指针作为参数的方法创建NSInvocation对象所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。