2011-09-20 3 views
5

현재 AppDelegate 클래스에서 Property를 사용하고 있습니다.싱글 톤 클래스의 @property 설정

내 필요에 따라이 전역 속성이 1 개 이상 필요하므로 속성을 보유 할 수있는 Singleton 클래스를 만들 생각입니다. 싱글 톤에 대한 많은 정보를 찾았지만 클래스의 인스턴스가 없어도 속성을 수정할 수 있습니까? 예를 들어

:

@interface Tools : NSObject 

@property (nonatomic,retain) NSDictionary* item; 

... 

@end 

내가하고 싶은 :

[Tools setItem:someDict]; 
someClass = [someClass alloc] initWithItem:[Tools getItem]]; 

내 모든 아이디어는 클래스 도구에 인스턴스가없는 문제에 끝났다. 나는 정적 변수 (속성이 아님)로 설정된 항목을 설정하려고 시도했지만 작동하지 않습니다.하지만 이것이 올바른 이유가 아닌 것은 확실합니다.

하지만 다른 질문, 추가 관련 : 프로젝트 - Prefix.pch 파일에

#import "Tools.h" 

, 아이템의 속성이 프로젝트에 모든 곳에서 사용할 수 있도록, 좋은 생각인가?

답변

5

싱글 톤을 사용하려면 인스턴스가 필요합니다. 그러나 문제는 어디에 있습니까?

[Tools sharedInstance].item = someDict; // or 
[[Tools sharedInstance] setItem:someDict; 

sharedInstance 메서드는 도구 인스턴스 하나만을 올바르게 인스턴스화합니다. 그것에 익숙해졌다. 대안은 반원입니다. 이 스레드를 볼 수 있습니다

BOOL being reset to NO in init method

+0

감사합니다. 그게 정확히 내가하려는 일이야. – EladG

2

는 지금까지 오브젝티브 C에 대한 내 지식이 관심사입니다, 당신은 인스턴스를 생성하지 않고 @property 호출 할 수 같은 것은 존재하지 않는다.
당신은 How Do I declare Class-level Property in Objective-C

+0

이해할 수 있습니다. 감사합니다. 정보를 아는 것이 좋습니다. – EladG

0

this ARC-related thread에서 클래스 @properties에 대한 논의 (ARC와 함께 싱글을 할 수있는 권장되는 방법 클래스 메소드 함께)이 있습니다를 참조 할 수 있습니다. 클래스 변수는 아직 존재하지 않지만 레이더를 사용하여 기능에 투표를하는 것이 좋습니다.