2013-05-19 3 views
0

(선택기를 사용하여) 메소드의 두 라이프 사이클에 걸쳐 UMButton을 만들고 NSMutableArray에 모두 붙여 넣습니다. 생성 된 버튼은 속성이 아니지만 배열은입니다.UIButton이 메모리에서 해제 되었습니까?

  1. 버튼을 배열에서 삭제하면 버튼이 메모리에서 자동으로 해제 되나요?
  2. 위의 답변이 '아니오'인 경우 메모리에서 해제하려면 어떻게해야합니까?

답변

1

단추는 아무도 그것을 보유하지 않으므로 메모리에서 실제로 해제됩니다. 보유 카운트는 관계없이 감소되지만 다른 누구도 보유하지 않으면 메모리에서 해제됩니다.

그러나 이것은 다소 혼란스러운 메커니즘입니다. UIButton은 뷰이며 뷰 계층 구조의 일부일 수도 있습니다. 또한 볼 수 있다면 공개되기 위해 수퍼 뷰에서 삭제해야합니다.

+1

무엇이 그것의 위험한 것입니까? 객체를 필요로하는 모든 사람들이 처리 할 때 객체가 릴리즈된다는 사실은 메모리 관리를 크게 단순화합니다. – Caleb

+0

위험한 것은 과장되었습니다. 뷰에서 이미 해제 된 객체를 호출 할 수 있지만이 객체는 분명히 하나의 객체가 아닌 경우가 있습니다. – Stavash

1

NSArray (및 NSMutableArray)에 넣은 내용은 배열에서 유지되며 배열에서 제거되거나 배열 자체가 해제 될 때 해제됩니다. 버튼과 다른 객체의 경우에도 마찬가지입니다.

관련 문제