-(void)invokeMethod
{
NSMethodSignature * sig = [[source class] instanceMethodSignatureForSelector:@selector(mySelector:)];
NSInvocation * invocation = [NSInvocation invocationWithMethodSignature:sig];
[invocation setTarget:myTarget];
[invocation setSelector:@selector(mySelector:)];
MySubClassOfNSInvocationOperation * command = [[[MySubClassOfNSInvocationOperation alloc] initWithInvocation:invocation] autorelease];
//setArgument retains command
[invocation setArgument:&command atIndex:2];
//addOperation retains command until the selector is finished executing
[operationQueue addOperation:command];
}
-(void)mySelector:(MySubClassOfNSInvocation*)command
{
//Do stuff
}
我不知道到底发生了什么,但NSInvocation
& MySubClassOfNSInvocationOperation
正在泄漏我该如何解决这个内存泄漏问题? NSInvocation的
当我删除行:
[invocation setArgument:&command atIndex:2];
它不泄漏,所以某种问题以传递命令作为参数。
完美。谢谢 – 2009-10-26 14:44:36