나는 CategoryViewController라는 클래스를하고있는 viewDidLoad 메서드는이 메서드를 호출 여기에 대부분의 경우 범주에서이 릴리스 호출로 인해 계측기가 충돌합니까?
- (void)reset {
Category * c = [[Category alloc] initWithId:0 title:@"Categories"];
[self setCategory:c];
[c release]; // <--- line of code I am interested in
self.title = @"Categories";
[self fillCategory];
}
가 null이 될 것이다, 그러나 때때로 카테고리가 할당 된 후에 호출 할 필요를 재설정합니다. 코드에 표시된 라인이 없으면 프로그램이 빌드되고 디버그됩니다. 장비를 가져 와서 누수를 확인할 수 있습니다. 내가 발견 할 수있는 유일한 누수는이 함수에서 초기화 된 카테고리입니다 (릴리스가 없기 때문에 이미 초기화 된 CategoryViewController에서이 함수를 호출 할 때 누수가 발생하기 때문입니다).
c에서 릴리스와 함께이 방법을 실행하려고하면 Instrument, XCode 및 Simulator가 모두 이상하게 작동하여 충돌 및 정지되어 임의의 SIGABRT 및 SIGKILL이 발생합니다. 거기에 코드 줄을 빌드하고 디버깅 할 수 있지만 Instruments는 내 앱을 시작하지 않습니다. 아무도 여기에 무슨 일이 일어나고 있는지에 대한 힌트를 줄 수 있습니까?
편집 : 귀하의 재산을 가정하면 아래와 같이 선언
@implementation Category
@synthesize title, articleCount, seeAlso, categoryId, articles, subcategories;
- (id)initWithId:(NSInteger)cid title:(NSString*)t{
self.title = t;
self.categoryId = cid;
[self setArticles:[[NSMutableArray alloc] init]];
[self setSubcategories:[[NSMutableArray alloc] init]];
[self setSeeAlso:[[NSMutableArray alloc] init]];
self.articleCount = 0;
return self;
}
, 그것은 우리가 가진 버그를 진단 할 수 있습니다, 잘 작동합니다 어떤 당신이 우리에게주었습니다. 우리는'initWithId : title :'과'setCategory :'뒤에있는 코드를 볼 필요가있다. – Chuck
'category'에'@ property'가 어떻게 선언되어 있습니까? –
'category'는 유지 된 속성입니까? 만약 그렇다면, 당신은 Apple setter setCategory를 자신의 메서드로 오버 라이딩합니까? 그렇다면 그 메소드 안에 전달 된 category 객체를 유지해야 할 것입니다. 여기 어둠 속에서 촬영하는 것만으로는 주어진 정보로 인해 충돌을 일으키는 원인을 알 수 없습니다. – Anurag