클래스 A에는 UIImage가 있습니다.정적 변수를 잘못 사용 했습니까?
클래스 B가 클래스 B의 인스턴스가
전에 A 형의 클래스에 정적 참조가, I 클래스 A의 인스턴스를 할당 클래스 B의 정적 메소드를 호출 할
+ (void)setClassAReference:(ClassA*)classA
{
classA_ = classA;
}
가능합니까?
필자는 현재 프로젝트를 살펴보기 전에 샘플 값 하나를 생성하고 정수 값을 설정 한 다음 B 값을 저장하고 저장된 값을 유지하면서 액세스 할 수있었습니다. 클래스 A의
비 정적 방법 : 클래스 B의 인스턴스가
- (UIImage*)imageWithIdentifier:(ImageIdentifier)identifier; // identifier is enum type
후, 내가하려고
는는하지만, 내 현재 프로젝트에, 엑스 코드는 나를 정수 값을 전달할 수 있도록 거부 A의 메소드 호출 :
UIImage *img = [classA_ imageWithIdentifier:ImageIdentifier_Foo];
그러나 암시 적 변환 경고가 표시됩니다. 자동 완성 기능은 (ImageIdentifier) 대신 (ID)를 표시합니다. 나는 모든 메소드 시그니처를 세 번 검사했고 모두 enum 유형을 사용합니다.
정적 변수를 잘못 사용하고 있습니까? 아니면 다른 문제가 있습니까? 싱글 톤을 사용할 수 있다는 것을 알았지 만 가능하면하지 않을 것입니다.
여기 열거 선언을 추가 해요 : * 무고한 사람들을 보호하기 위해 변경
typedef enum
{
ImageIdentifier_Foo = 0,
ImageIdentifier_Bar
} ImageIdentifier;
* 실제 이름을.
당신이 당신이 NSObject의에 클래스 메소드를 사용하여 인스턴스화하기 전에 클래스에 정적 변수를 초기화하려면
이+ (void) initialize
이것은 당신이 당신의 정적를 ClassA 변수를 할당 할 수있는 곳입니다 첫째
왜 '클래스'의 '인스턴스'가 생성되기 전에 '클래스'가 '인스턴스'에 대한 참조를 가질 필요가 있습니까? 'B'의 모든 인스턴스는'A'의 _ 인스턴스 _ 인스턴스를 가질 것입니다. –
'A'는 'B'의 여러 하위 클래스에서 사용되는 몇 가지 이미지를 보유합니다. 나는 클래스들을 재사용 가능하게 만들고 싶어서, 각 앱마다 다른 이미지 이름을 가질 수있다. 각 하위 클래스가 정적 메서드로 한 번만 보내면 동일한 이미지 이름을 보낼 필요가 없습니다. – TigerCoding