objective-c 递归访问错误
objective-c BAD ACCESS in recursion
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;
帮我解决了问题。
感谢您的支持:)
基于 gnasher729(感谢您)的评论:
将 TestObj.m 中的行从
更改为
NSXMLNode *currNode = [[NSXMLNode alloc] init];
至
NSXMLNode *currNode;
帮我解决了问题。
感谢您的支持:)
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;
帮我解决了问题。
感谢您的支持:)
基于 gnasher729(感谢您)的评论:
将 TestObj.m 中的行从
更改为NSXMLNode *currNode = [[NSXMLNode alloc] init];
至
NSXMLNode *currNode;
帮我解决了问题。
感谢您的支持:)