繁体   English   中英

如何使用NSInvocation创建我自己的类的实例?

[英]How to create instance of my own class using NSInvocation?

我试图动态创建自定义类的新实例(自定义init方法调用,带有BOOL参数)。 如何使用NSInvocation做到这一点?

这是我到目前为止的内容:

NSMethodSignature* signature = [NSClassFromString(className) instanceMethodSignatureForSelector: sel];
NSInvocation* invocation = [NSInvocation invocationWithMethodSignature: signature];
[invocation setTarget: [NSClassFromString(className) alloc]];
[invocation setSelector:sel];
[invocation setArgument:&value atIndex:2];
[invocation invoke];
[invocation getReturnValue:&obj];

上面的示例在[invocation invoke];行中引发错误[invocation invoke]; 错误是"message sent to deallocated instance"

您的代码无法正常工作,因为NSInvocation不会保留目标或任何参数,除非您告知目标对象或参数(带有retainArguments )。 因此,您alloc一个实例,然后在invoke NSInvocation之前将其销毁。

或者,创建一个实例变量,并将alloc实例存储在那里,然后将其传递给NSInvocation

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM