0

에 할당 된 여유 메모리를 할ARC, 나는 다음과 같은 개인 변수를 정의 내보기 컨트롤러 중 하나에서 private 변수

@implementation CNLibraryViewController { 
CNMaterialsViewController *_materials; 
} 

내가보기를 다시로드 할 때, 나는 새로 메모리를 할당하고이 변수를 초기화 할 때마다 따를 때, 나는 다음과 같은 몇 가지 개인 변수를 정의한 CNMaterialsViewController.m에서

_materials = [[CNMaterialsViewController alloc] init]; 
_materials.gridViewActionDelegate = self; 
_materials.itemRetrieving = self.dataModel.itemRetrieval; 
[_materials setSortDescriptors:_sortDescriptors]; 
[_materials loadItems:[results allObjects]]; 

,

@implementation CNMaterialsViewController { 
    CNItemViewController *_itemViewController; 
    id<CNItemViewControllerViewSetupDelegate> _itemDescriptionTileSetup; 
} 

문제는 이러한 두 변수의 보유 수가 CNMaterialsViewController 초기화마다 하나씩 증가한다는 것입니다.

이유가 없습니다. 어느 누구도 문제를 찾아 낼 수 있습니까?

해결 방법으로 nil에 해당 변수를 할당 한 후 CNMaterialsViewController을 초기화합니다. 하지만 좋은 해결책이라고 생각하지 않습니다.

도와주세요.

+0

속성을 사용하여 구현하십시오. – mariusLAN

답변

0

ARC에서 ivars를 처리하는 방법에 대해 컴파일러에게 알려줘야합니다. 변수를 __weak으로 한정하지 않으면 컴파일러는 강력한 참조를 원한다고 가정하고 부모가 여전히 주위에있는 한이를 유지합니다.

@mariusLAN이 말한 것에 덧붙여 ivars를 더 이상 선언 할 필요가 없다는 것을 덧붙이면 간단히 속성을 선언하고 거기에 의도를 기술 할 수 있습니다. 즉

@interface CNLibraryViewController 
@property (weak, nonatomic) CNMaterialsViewController *_materials; 
@end 
+0

고마워요 @rsswtmr. 나는 이것을 시도하고 피드백을 추가 할 것이다 ... – chinthakad

+0

나는 속성 구현을 시도했다. 그러나 _materials 인스턴스의 # Living은 여전히 ​​증가하고 있습니다. :( – chinthakad

관련 문제