죄송합니다. 이것이 멍청한 질문 인 경우 죄송합니다. 그러나 프로그래밍을 배우기 시작하면서 몇 가지 간단한 일들을 수행했습니다. 내 ViewController 중 하나에서 NSDateFormatter를 사용하여 특정 형식으로 원하는 날짜를 표시하고 형식이 변경되지 않으면 해당 NSDateFormatter를 내 클래스 또는 클래스의 속성으로 선언하는 것이 "우수 사례"입니까? 내 다른 방법으로 재사용 할 수 있도록 viewDidLoad에서 초기화할까요? 지금은 디스플레이를 다루는 메소드에서 필요로 할 때마다 인스턴스를 생성하고, 선언을 계속하거나, 한번 선언하고 viewController 클래스 전체에서 사용하는 것이 더 나은지 궁금해하고 있습니다. 감사!문자열을 날짜로 표시하기 위해 nsdateformatter를 다시 사용하십시오.
답변
"멍청한 질문"이 아닙니다. 그것은 합리적인 대답으로 합리적인 질문입니다.
순수 효율 관점에서 보면 조기에 최적화됩니다. 걱정마, 행복해. 정확하게 (NSDateFormatters를 유출하지 않도록) 메모리를 올바르게 관리하고 있다면, 특히 이것이 가벼운 객체라는 점을 감안할 때 특정 인스턴스를 얻는 방법이 중요하지 않습니다. 새로운 NSDateFormatter를 루프로 1000 번 만들면 어리석은 짓을하게됩니다. 그러나 객체를 생성하고 필요로 할 때 제대로 존재하지 않으면 큰 문제가되지 않습니다.
반면에 아키텍처 측면에서 DRY가 수행 중인지 확인하십시오. 날짜 포맷터에 구성이 필요하면 만들 때마다 반복하지 마십시오. 매번 같은 방식으로 날짜 포맷터를 제공하는 메소드를 작성하여 구성 코드가 모두 한 곳에서 이루어 지도록하십시오.
새로운 객체를 인스턴스화하는 것은 항상 메모리 및 컴퓨팅 시간으로 인해 발생하므로 많은 노력없이 가능하다면 최소한 동일한 클래스 내에서 한번 선언 한 다음 다시 사용해야합니다. NSDateFormatter
은 스레드로부터 안전하지 않으므로 서로 다른 스레드간에 하나의 인스턴스를 공유 할 수 없습니다.
모든 개체의 경우 런타임에 선언하고 사용하고 해제하여 메모리에있는 해당 개체의 시간이 최대가되도록하는 것이 가장 좋습니다.
우리는 클래스 전체에 걸쳐 동일한 ivar 값을 필요로 할 때 ivar를 만듭니다. 직원의 나이와 마찬가지로 seniority, ageWise 카테고리 등에서 다른 방법으로 검사됩니다. 그리고이 iVar가 객체라면 아이폰에서는 항상 속성으로 사용하는 것이 좋다. 그래서 메모리 관리 문제는 컴파일러쪽으로 이동한다.
이제 귀하의 경우 날짜 개체를 가져 와서 문자열 또는 매개 변수로 문자열을 반환하고 날짜 개체를 반환하고 NSDateFormater를 만들어 사용하는 간단한 메서드를 생성 할 수 있습니다. iVar로 만들 필요가 없습니다.
- 1. 차이를 계산하기 위해 문자열을 날짜로 변환합니다.
- 2. NSDateFormatter가 문자열을 날짜로 변환하지 않습니다.
- 3. Java : 문자열을 날짜로 변환
- 4. 문자열을 날짜로 변환
- 5. 문자열을 HTML 안전으로 표시하기
- 6. webview에서 검색된 텍스트를 강조 표시하기 위해 사용자 정의 색상을 사용하십시오.
- 7. Microsoft Access2007에서 연속 폼을 표시하기 위해 스크롤 막대를 사용하십시오.
- 8. GWT에서 문자열을 날짜로 변환
- 9. 문자열을 날짜로 변환합니다. C++
- 10. 날짜 문자열을 날짜로 변환합니다.
- 11. 문자열을 날짜로 변환하는 방법
- 12. 문자열을 날짜로 변환
- 13. mySQL에서 문자열을 날짜로 포맷
- 14. 문자열을 Access에서 날짜로 변환
- 15. 문자열을 uri로 변환하여 ImageView에 표시하기 위해 비트 맵으로 변환
- 16. 문자열을 날짜로 변환, 형식 : "dd.mm.yyyy"
- 17. 문자열을 형식이 지정된 날짜로 변환
- 18. 문자열을 sybase의 날짜로 변환하는 방법
- 19. 문자열을 날짜로 변환하는 SSIS 식
- 20. 문자열을 날짜로 변환하고 일수가 달라짐
- 21. 유효성 검사기를 다시 사용하십시오.
- 22. JAXB 그대로 문자열을 사용하십시오
- 23. div 요소를 표시하기 위해 스크롤하기
- 24. 덴마크어 시간/날짜로 다시 작성
- 25. JavaScript를 실행하기 전에 CSS를 다시 작성하십시오 (진행 표시기를 표시하기 위해)
- 26. cocos2d 작업을 다시 사용하십시오.
- 27. preventDefault를 다시 사용하십시오.
- 28. Cocos2d CocosNodes를 다시 사용하십시오.
- 29. 문자열을 적절한 경우에 넣기 위해 LINQ와 lambdas를 사용하십시오.
- 30. 이 문자열을 이스케이프 처리하기 위해 decode()와 regex를 사용하십시오.