2013-03-15 3 views
0

네비게이션 컨트롤러와 tableViews를 사용하는 앱이 있는데 디스크에 저장하지 않고 여러보기를 탐색하는 동안 정보를 저장하는 간단한 클래스를 만들고 싶습니다.iOS : UITableView 앱에 저장하기위한 싱글 톤 클래스

난 단지 class method들과 singleton을 만들 수 있습니다,하지만,이 경우 더 낫다고는 에게 (@properties 수업 방법과 작업을하지는 등) instance variable로 데이터를 보유하는 컬렉션 클래스를 작성해야합니다. iOS의 속성에서 선언 된 객체 만 볼 수 있습니다.

헤더처럼 보일 것이다 클래스 :

+ (BOOL) addObject: (id) object; 
+ (BOOL) removeObject: (id) object; 
+ (NSInteger) count; 

및 개인 거 야 스토리지

NSArray *cache; 

에 대한 NSArray를이하지만이를 달성하는 좋은 방법입니다 태스크? 또는 인스턴스 메소드로 non-singelton 클래스를 가질 수 있고 다른 테이블 뷰에서 클래스의 동일한 인스턴스를 사용할 수 있습니까? 그렇다면 어떻게해야합니까?

+0

이러한 추가 및 제거 개체 메서드 내에서 수행중인 작업에 대한 자세한 내용을 제공 할 수 있습니까? 응용 프로그램 전체에 캐시 배열을 저장 하시겠습니까? –

+0

중요 질문 :이 데이터에 여러 스레드가 액세스 할 가능성이 있습니까? –

+0

(둘 이상의 장소에서 하나의 인스턴스를 사용할 수 있습니다. 가능하지 않은 경우에는 쓸모가 없습니다.) –

답변

0

먼저 모든 읽기 쓰기 속성이 인스턴스 변수를 자동 합성합니다 (사용자가 두 세트와 getter를 구현하지 않는 한).

둘째, 해당 정보가 전체 (또는 대부분의) 앱에 대해 글로벌 인 경우 싱글 톤이 필요한 것입니다. 속성 (또는 ivar)으로 유지할 필요가 없습니다. 그것은 싱글 톤이며, 자체 포인터를 유지합니다.

여전히 속성으로 가고 싶다면 앱의 모든 VC에 어떻게 전달해야할까요 (스토리 보드를 사용하는 경우 아마도 prepareForSegue:sender:).

0

먼저 필요한 글로벌 정보를 파악하십시오. 그런 다음 전역 정보와 일관성 있고 논리적으로 정보와 연관되어있는 기존 개체를 파악합니다. 예를 들어, UITableView를 "백업"하는 정보 배열이 필요하면 해당 배열에 대한 포인터를 테이블 뷰 데이터 소스 인스턴스에 저장하십시오.

"싱글 톤"을 만들 필요는 거의 없으며 싱글 톤을 많이 사용하는 것은 일반적으로 프로그래밍이 좋지 않다는 신호입니다.