c函数在执行期间给我一个BAD ACCESS错误:(为了便于阅读,我省略了函数的实际工作部分,错误也出现在此代码片段中)
- (void) recursiveClearUpToH2:(NSXMLElement *)rootElement
{
NSXMLNode *currNode = [[NSXMLNode alloc] init];
currNode = [rootElement childAtIndex:0];
[self recursiveClearUpToH2:currNode];
}
错误出现在第一行“NSXML ...”中。有趣的是,它总是出现在不同的递归中。
希望提高我的问题的好处,我写了另一个应用程序,以更简单的方式再现相同的错误: 的main.m:
#import <Cocoa/Cocoa.h>
#import "TestObj.h"
int main(int argc, const char * argv[]) {
TestObj *testObj = [[TestObj alloc] init];
NSInteger *i =1;
[testObj recTest:i];
return 0;
}
TestObj.h:
#import <Foundation/Foundation.h>
@interface TestObj : NSObject
- (void)recTest:(NSInteger *)recCount;
@end
TestObj.m:
#import "TestObj.h"
@implementation TestObj
- (void)recTest:(NSInteger *)recCount
{
recCount += 1;
NSXMLNode *currNode = [[NSXMLNode alloc] init];
if (recCount < 100) {
TestObj *testObj = [[TestObj alloc] init];
[testObj recTest:recCount];
}
}
@end
从
更改TestObj.m中的行NSXMLNode *currNode = [[NSXMLNode alloc] init];
到
NSXMLNode *currNode;
为我解决了这个问题。
感谢您的支持:)
答案 0 :(得分:-1)
基于gnasher729(感谢你)评论:
从
更改TestObj.m中的行NSXMLNode *currNode = [[NSXMLNode alloc] init];
到
NSXMLNode *currNode;
为我解决了这个问题。
感谢您的支持:)