gpt4 book ai didi

ios - ARC 下双重自由

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:45:07 25 4
gpt4 key购买 nike

我在我的应用程序中使用 ARC 并且由于这个原因而发生新的崩溃:

malloc: *** error for object 0x17e9a5d0: double free
*** set a breakpoint in malloc_error_break to debug

为了解决这个问题,我启用了 Zombie Objects,原因是:

*** -[CFString release]: message sent to deallocated instance 0x15d183e0

我的代码:

Class myClass = NSClassFromString(classString);
SEL mySelector = NSSelectorFromString(selectorString);
NSString *arg = @"arg";

NSMethodSignature *sig = [myClass methodSignatureForSelector:mySelector];
NSInvocation * myInvocation = [NSInvocation invocationWithMethodSignature:sig];

[myInvocation setTarget: myClass];
[myInvocation setSelector: mySelector];
[myInvocation setArgument:&arg atIndex:2];

NSString *result = nil;
[myInvocation retainArguments];
[myInvocation invoke];
[myInvocation getReturnValue: &result];

NSLog(@" Result String : %@ ",result);

出了什么问题?哪个 CFString ??感谢您的任何回复。

编辑:

对象 NSString *result 引起的。如何在下一步中更正此错误?

最佳答案

result 在调用传回时不会被保留。尝试

CFStringRef result;
[myInvocation retainArguments];
[myInvocation invoke];
[myInvocation getReturnValue:&result];
if (result)
CFRetain(result);

NSLog(@" Result String : %@ ", (__bridge NSString *)result);

关于ios - ARC 下双重自由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19394935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com