(선택기를 사용하여) 메소드의 두 라이프 사이클에 걸쳐 UMButton을 만들고 NSMutableArray에 모두 붙여 넣습니다. 생성 된 버튼은 속성이 아니지만 배열은입니다.UIButton이 메모리에서 해제 되었습니까?
- 버튼을 배열에서 삭제하면 버튼이 메모리에서 자동으로 해제 되나요?
- 위의 답변이 '아니오'인 경우 메모리에서 해제하려면 어떻게해야합니까?
(선택기를 사용하여) 메소드의 두 라이프 사이클에 걸쳐 UMButton을 만들고 NSMutableArray에 모두 붙여 넣습니다. 생성 된 버튼은 속성이 아니지만 배열은입니다.UIButton이 메모리에서 해제 되었습니까?
단추는 아무도 그것을 보유하지 않으므로 메모리에서 실제로 해제됩니다. 보유 카운트는 관계없이 감소되지만 다른 누구도 보유하지 않으면 메모리에서 해제됩니다.
그러나 이것은 다소 혼란스러운 메커니즘입니다. UIButton은 뷰이며 뷰 계층 구조의 일부일 수도 있습니다. 또한 볼 수 있다면 공개되기 위해 수퍼 뷰에서 삭제해야합니다.
NSArray
(및 NSMutableArray
)에 넣은 내용은 배열에서 유지되며 배열에서 제거되거나 배열 자체가 해제 될 때 해제됩니다. 버튼과 다른 객체의 경우에도 마찬가지입니다.
무엇이 그것의 위험한 것입니까? 객체를 필요로하는 모든 사람들이 처리 할 때 객체가 릴리즈된다는 사실은 메모리 관리를 크게 단순화합니다. – Caleb
위험한 것은 과장되었습니다. 뷰에서 이미 해제 된 객체를 호출 할 수 있지만이 객체는 분명히 하나의 객체가 아닌 경우가 있습니다. – Stavash