자동 복구 된 객체를 유지하면 어떻게됩니까? 공개 될 예정입니까, 아니면 보유가 승리합니까?iPhone - 자동 출시 후에 유지하면 어떻게됩니까?
답변
당신은 내가 오토 릴리즈 객체를 유지하면 어떻게되는지 알아? 이 출시 되나요? 아니면 보유가 승리합니까?
retain
"이긴하지만"그런 식으로 생각하면 실패합니다.
보유 및 해제는 개체의 보유 수를 늘리거나 줄이는 메커니즘 일뿐입니다. Autorelease는 단순히 지연된 릴리스입니다. 그 이상도 이하도 아닌.
자동 회수 된 개체를 보유하고있는 경우 보유 개수가 나중에 줄어들지 만 지금은 보유 개수를 늘리고 있습니다. 이것은 항상 발생합니다. [NSString stringWithFormat: @"...."]
은 이벤트 루프를 통해 현재 패스를 넘기를 원한다면 retain
의 자동 반복 문자열을 반환합니다.
변수를 유지하려면 이 필요합니다. 유지하려면이 필요합니다. 예를 들어 :
는myButton = [[UIButton buttonWithType:...] retain];
buttonWithType:
방법은 autorelease
인스턴스화 된 것 UIButton
을 반환합니다. 그것은 필요할 때 언제든지 스스로를 발표 할 것입니다.
보유가 종료됩니다. 이는 매우 일반적이며 예외적 인 관행입니다.
은 일반적으로 편리한 방법은 너무 오래 당신이 나중에 출시 기억으로,
[NSString stringWithFormat:@""];
당신이 당신이 필요 어떤 객체를 유지할 것으로 예상된다처럼 오토 릴리즈 객체를 반환합니다.
자동 응답은 현재 시스템 메시지의 끝에서 발생한다는 것을 기억하십시오.
아래 문서에서 : "시스템에서 처리하는 각 메시지에 대해 자동 해제 풀이 만들어지고 풀의 개체가 모두 해당 메시지 처리가 완료된 후 자동으로 해제됩니다."
이의 멋진 설명
는 여기에서 찾을 수 있습니다 :http://www.iphonedevsdk.com/forum/iphone-sdk-tutorials/7295-getters-setters-properties-newbie.html
autorelease가 현재의 방법의 결론에서 반드시 (반드시) 발생하지 않는다는 점을 제외하면 꽤 좋은 대답입니다. 자동 릴리즈 된 오브젝트는 풀이 빠져 나갈 때만 릴리스되며 일반적으로 실행 루프를 통과 할 때마다 한 번씩 발생합니다. autoreleased 오브젝트는 오랜 시간 동안 붙어있을 가능성이 있습니다. – kubi
@ kubi : "자동 릴리스 풀은 시스템에서 처리하는 각 메시지에 대해 만들어지고 풀의 개체는 모두 해당 메시지 처리가 완료된 후 자동으로 해제됩니다." 나는 현재의 메시지를 의미하지는 않았다. 나는 현재의 시스템 메시지를 의미했다. 나는 내 자리를 바로 잡을거야. –
"현재 시스템 메시지"는 개념적으로 정확하지만보다 정확한 용어는 "현재 이벤트"입니다. 일반적으로 "현재 루프 런으로 처리되는 이벤트"입니다. – bbum
가장 간단한 방법은 시도하는 것입니다. 코드 수정, 빌드 및 실행 귀하의 결과를 알려주십시오. %) –