클래스 메소드에 전달 된 객체를 유지하고 해제하는 가장 좋은 방법은 무엇입니까? 당신이있는 경우Objective-C 클래스 메소드의 동작 유지 객체
는 예를 들어, "클래스 변수는"과 같이 선언 :
+ (void)myClassMethod:(NSString *)param {
_myString = param;
}
... 있습니다
static NSString *_myString = nil
가 ...이 작업을 수행 할 수있는 권리 일 단점이 있기 때문에 호출자가 param에 0이 아닌 보유 개수를 유지해야하므로 단 한 순간에 해제 될 수 있습니다. 또한 사람은이 작업을 수행 할 수 있습니다 : 해당 클래스 수준 dealloc
호출하지 않고 메모리를 누출하는 단점이있다
+ (void)myClassMethod:(NSString *)param {
[_myString autorelease];
_myString = [param retain];
}
을 .... 또는 이러한 종류의 클래스 변수를 전체적으로 피하는 것이 좋을까요? 이러한 유형의 객체의 수명을보다 일반적인 방식으로 관리하는 싱글 톤 클래스를 사용해야할까요?
여기에 Apple's docs on creating a singleton instance입니다.
내가 작업하고있는 코드는 매끄러운 (그러나 여전히 새로운) Objective Resource 프로젝트 (http://www.iphoneonrails.com/)입니다.
잘못된 질문을하고 있습니다. 전역 변수를 수행하는 방법을 묻는 대신 글로벌 변수를 제거하는 데 도움을 요청해야합니다. 그리고 네, 이것을 클래스 메소드 (또는 싱글 톤) 뒤에 숨기더라도 여전히 글로벌 변수입니다. – Sven