객관적인 C 프로그래밍을 처음 접했고 메소드에서 객체를 만들 때 약간의 문제가 발생합니다. 이 프로그램의 목적은 나중에 그래프 이론을 테스트 할 때 사용할 그래프를 표현하는 방법을 만드는 것입니다.Objective-C 및 힙에 새 객체 생성
문제가 있습니다.
//From GraphObject.m
-(void) addNode
{
GraphNode *newNode = [[GraphNode alloc] initWithId:count];
[graphNodes addObject:newNode];
NSLog(@"Node %i added", count);
count++;
}
이 발췌문은 내 GraphObject 클래스에서 가져온 것이며 프로그램이 중단되는 곳입니다. 블록의 첫 번째 줄에서 중단됩니다. 이 메서드는 GraphNode 개체를 만들어 GraphObject 클래스의 NSMutableArray (graphNodes)에 배치합니다. count 변수는 얼마나 많은 노드가 추가되었는지 간단히 추적합니다. C++에 익숙해 져서 왜 힙에 객체를 넣지 않고 왜 사용하는지 알기가 힘듭니다. Btw. 내 주머니에 넣으면 똑같은 라인이 제대로 작동합니다. 조금 벗어납니다.
누군가 내가 뭘 잘못하고 있는지 설명 할 수 있다면 크게 감사하겠습니다.
편집 : 다음은 initWithId 메소드입니다. 그 원인이 여기 있을지도 모른다고 생각하기 시작했습니다. 그것은 자기에 대한 포인터를 반환해야합니까?
-(id) initWithId:(int)n
{
nodeId = [NSNumber numberWithInt:n];
neighbourNodes = [NSMutableArray arrayWithCapacity:8];
return self;
}
메모리 누수는 (yAak)을 언급하고, 나는이 방법에서 GraphNode 배열의 창조에 관하여 있으리라 믿고있어. 하지만 배열을 삭제할 때 해결되지 않을까요? 같은 방법으로 삭제하면 아무것도 보이지 않습니다. 또한, xcode를 처음 사용하는 중에 오류 메시지를 게시하지 않아서 죄송합니다. 빌드가 성공적으로 완료되었으며 코드의 특정 줄에 프로그램이 멈췄다 고합니다.
EDIT2 (솔루션) : 음, 이상한 놀람이 있습니다. 코드를 제거/자르고 프로그램을 한 번 실행 한 다음 똑같은 코드를 다시 붙여 넣었습니다. 이제 제대로 작동합니다. 바로 거기에 하나의 안정적인 IDE가 있습니다. 대답에 다시 한번 감사 드리며, 나는 곧 여기로 돌아올 것이라고 확신한다.
중단되면 오류가 게시됩니다. 여기 내가 잘못 본 것은 휴식을 초래하지 않을 잠재적 인 메모리 누수입니다. – MechEthan
- [GraphNode initWithId :]의 구현을 게시 할 수 있습니까? 또한 표시되는 오류 메시지를 게시하십시오. 잘못된 코드로 게시 한 코드에 대해서는 아무 것도 없습니다. –
요청에 따라 업데이트 됨. – user1159690