2012-05-05 4 views
2

죄송합니다. 이것이 멍청한 질문 인 경우 죄송합니다. 그러나 프로그래밍을 배우기 시작하면서 몇 가지 간단한 일들을 수행했습니다. 내 ViewController 중 하나에서 NSDateFormatter를 사용하여 특정 형식으로 원하는 날짜를 표시하고 형식이 변경되지 않으면 해당 NSDateFormatter를 내 클래스 또는 클래스의 속성으로 선언하는 것이 "우수 사례"입니까? 내 다른 방법으로 재사용 할 수 있도록 viewDidLoad에서 초기화할까요? 지금은 디스플레이를 다루는 메소드에서 필요로 할 때마다 인스턴스를 생성하고, 선언을 계속하거나, 한번 선언하고 viewController 클래스 전체에서 사용하는 것이 더 나은지 궁금해하고 있습니다. 감사!문자열을 날짜로 표시하기 위해 nsdateformatter를 다시 사용하십시오.

답변

3

"멍청한 질문"이 아닙니다. 그것은 합리적인 대답으로 합리적인 질문입니다.

순수 효율 관점에서 보면 조기에 최적화됩니다. 걱정마, 행복해. 정확하게 (NSDateFormatters를 유출하지 않도록) 메모리를 올바르게 관리하고 있다면, 특히 이것이 가벼운 객체라는 점을 감안할 때 특정 인스턴스를 얻는 방법이 중요하지 않습니다. 새로운 NSDateFormatter를 루프로 1000 번 만들면 어리석은 짓을하게됩니다. 그러나 객체를 생성하고 필요로 할 때 제대로 존재하지 않으면 큰 문제가되지 않습니다.

반면에 아키텍처 측면에서 DRY가 수행 중인지 확인하십시오. 날짜 포맷터에 구성이 필요하면 만들 때마다 반복하지 마십시오. 매번 같은 방식으로 날짜 포맷터를 제공하는 메소드를 작성하여 구성 코드가 모두 한 곳에서 이루어 지도록하십시오.

0

새로운 객체를 인스턴스화하는 것은 항상 메모리 및 컴퓨팅 시간으로 인해 발생하므로 많은 노력없이 가능하다면 최소한 동일한 클래스 내에서 한번 선언 한 다음 다시 사용해야합니다. NSDateFormatter은 스레드로부터 안전하지 않으므로 서로 다른 스레드간에 하나의 인스턴스를 공유 할 수 없습니다.

0

모든 개체의 경우 런타임에 선언하고 사용하고 해제하여 메모리에있는 해당 개체의 시간이 최대가되도록하는 것이 가장 좋습니다.

우리는 클래스 전체에 걸쳐 동일한 ivar 값을 필요로 할 때 ivar를 만듭니다. 직원의 나이와 마찬가지로 seniority, ageWise 카테고리 등에서 다른 방법으로 검사됩니다. 그리고이 iVar가 객체라면 아이폰에서는 항상 속성으로 사용하는 것이 좋다. 그래서 메모리 관리 문제는 컴파일러쪽으로 이동한다.

이제 귀하의 경우 날짜 개체를 가져 와서 문자열 또는 매개 변수로 문자열을 반환하고 날짜 개체를 반환하고 NSDateFormater를 만들어 사용하는 간단한 메서드를 생성 할 수 있습니다. iVar로 만들 필요가 없습니다.

관련 문제