ARC가 활성화되고 iOS 7에서만 응용 프로그램이 생성됩니다. 내 모든 속성은 적절하게 약한 것으로 표시되고 모든 강력한 변수는 필요한 곳에 nil로 표시됩니다.ARC가있는 경우에도 계측에서 메모리가 계속 증가합니다.
Instruments에서 응용 프로그램을 실행할 때 메모리 할당이 지속적으로 증가하는 것으로 나타났습니다. 어떤 화면으로 가면 메모리가 증가합니다 (대략 2MB). 내가보기를 터트 리면 메모리는 몇 KB 밖에되지 않습니다. 나는 무슨 일이 일어나는 지 모른다.
나는 다음을 사용하고 뷰를 저런 애 동안 :UPDATE : 여기
[UIView animateWithDuration:0.5 animations:^{
CGRect newFrame = aSideMenu.view.frame;
newFrame.origin = SIDE_MENU_VIEW_ORIGIN_FINAL;
[aSideMenu.view setFrame:newFrame];
} completion:^(BOOL finished) {
[sender setUserInteractionEnabled:YES];
}];
내가 블록에 aSideMenu
을 사용하고 있습니다. aSideMenu
은 강력한 변수입니다. 약한 참조 및 사용법을 만들어야한다고 생각합니까?
__weak id aWeak = aSideMenu;
이 aWeak 대신 aSideMenu를 사용 하시겠습니까? 또한
몇 블록에서 내가 사용하고 있습니다 :
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:....nil];
내가 너무 '딕셔너리'의 약한 참조를 전달해야 하는가?
이유가 확실하지 않습니다. 문제를 추적하도록 도와주세요. 또한 더 나은 해결책을 위해이 질문에 추가해야 할 것이 있으면 알려주십시오.
감사합니다.
이 블록 안에있는 사진을 표시 할 수 있습니까? 그것은 당신이 어떤 객체를 보유해서는 안되며 참조하는 것이 가능합니다 ... 만일 당신이 블록에서 자기에 접근하고 있다면 블록에 들어가기 전에 자기 자신에 대한 약한 포인터를 생성하십시오. –
예, 사이드 블록의 강한 포인터에 대해서는 약한 참조를 만들어야합니다. 그러나 객체가 할당 해제 된 경우 weak 포인터는 nil이 될 수 있으므로 블록 내부의 약 포인터를 강력하게 참조하고 사용하기 전에 nil을 확인하십시오. 사전의 경우 해당 인스턴스 변수 또는 속성이 예인 경우 메서드 로컬에서 블록 연산자를 사용하고 해당 블록이 측면 블록이면 그대로 사용합니다. –