![](/img/trans.png)
[英]How to create an NSInvocation object using a method that takes a pointer to an object as an argument
[英]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.