gpt4 book ai didi

iphone - 使用 NSOperation 时的 EXC_BAD_ACCESS

转载 作者:行者123 更新时间:2023-12-03 20:38:12 27 4
gpt4 key购买 nike

这与我遇到的问题几乎相同,除了代码非常不同:http://www.cocoabuilder.com/archive/message/cocoa/2009/3/24/233015

我想将一些处理卸载到 NSOperation,将文件名作为 NSOperation 加载和解析的引用传递。输入 -(void)init 时,应用崩溃并显示 EXEC_BAD_ACCESS

以下是我启动操作的方式:

int n = [files count];
for (int i = 0; i < n; i++) {
NSString *filename = [files objectAtIndex:i];
FilterParseOperation *parser = [[FilterParseOperation alloc] initWithContentsOfFile:filename];
[filterParseQueue addOperation:parser];
[parser release], parser = nil;
}

在删除 NSOperation 中的所有内容后,我仍然以崩溃告终。以下代码崩溃:

#import "FilterParseOperation.h"

@implementation FilterParseOperation

- (id)initWithContentsOfFile:(NSString *)aFilename {
filename = aFilename;
return self;
}

- (void)dealloc {
[filename release], filename = nil;
[super dealloc];
}

- (void)main {
// do nothing!
}

@end

这是崩溃的汇编程序输出(我不是忍者,无法理解它所说的内容)。这会在 __opLock 中的 addOperation 之后立即发生

0x305ce610  <+0000>  push   ebp
0x305ce611 <+0001> mov ebp,esp
0x305ce613 <+0003> push ebx
0x305ce614 <+0004> sub esp,0x14
0x305ce617 <+0007> call 0x305ce61c <__opLock+12>
0x305ce61c <+0012> pop ebx
0x305ce61d <+0013> mov eax,DWORD PTR [eax+0x4]
0x305ce620 <+0016> mov edx,DWORD PTR [eax+0x14] <- Crash happens here
0x305ce623 <+0019> mov eax,DWORD PTR [ebx+0xbfe94]
0x305ce629 <+0025> mov DWORD PTR [esp+0x4],eax
0x305ce62d <+0029> mov DWORD PTR [esp],edx
0x305ce630 <+0032> call 0x306af856 <dyld_stub_objc_msgSend>
0x305ce635 <+0037> add esp,0x14
0x305ce638 <+0040> pop ebx
0x305ce639 <+0041> leave
0x305ce63a <+0042> ret
0x305ce63b <+0043> nop DWORD PTR [eax+eax+0x0]

有什么想法吗? :)

最佳答案

您应该在 -initWithContentsOfFile: 中调用 [super init];。 NSOperation 可能会在那里进行一些工作所需的设置。

关于iphone - 使用 NSOperation 时的 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1369809/

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