gpt4 book ai didi

objective-c - 为什么在设置 SHFileOperation ClientContext 的信息指针时收到 EXC_BAD_ACCESS?

转载 作者:行者123 更新时间:2023-12-03 17:53:57 26 4
gpt4 key购买 nike

我正在使用 FSCopyObjectAsync 在 Cocoa 应用程序中复制文件。问题是,每当我尝试设置 info 字段(void * 类型的对象)时,应用程序都会因 EXEC_BAD_ACCESS 而崩溃。我不确定我做错了什么。

这是我的代码:

// Start the async copy.
FSFileOperationClientContext *clientContext = NULL;
if (spinner != nil) {
clientContext->info = (__bridge void *)(spinner); // <- Problem here!
}

status = FSCopyObjectAsync(fileOp,
&source,
&destination, // Full path to destination dir.
CFSTR("boot.iso"), // Copy with the name boot.iso.
kFSFileOperationDefaultOptions,
copyStatusCallback,
0.5, // How often to fire our callback.
clientContext); // The progress bar that we want to use to update.

CFRelease(fileOp);

我正在使用 ARC,如果我注释掉处理 clientContext 的行并在 FSCopyObjectAsync 的最后一个参数中传递 NULL ,它就可以工作>,但这严重削弱了我的应用程序的功能。因此,这肯定是作业造成的。

最佳答案

您正在创建一个 NULL 指针,但没有分配它,然后尝试引用它。更改代码,以便将其分配在堆栈上并传递其地址,如下所示。

    // Start the async copy.
FSFileOperationClientContext clientContext;
if (spinner != nil) {
clientContext.info = (__bridge void *)(spinner);
}

status = FSCopyObjectAsync(fileOp,
&source,
&destination, // Full path to destination dir.
CFSTR("boot.iso"), // Copy with the name boot.iso.
kFSFileOperationDefaultOptions,
copyStatusCallback,
0.5, // How often to fire our callback.
&clientContext); // The progress bar that we want to use to update.

CFRelease(fileOp);

关于objective-c - 为什么在设置 SHFileOperation ClientContext 的信息指针时收到 EXC_BAD_ACCESS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16847268/

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