2014-03-04 3 views
-1

클래스의 .h에 정적 varibale이 있고 그 자식 클래스로 상속되기를 원합니다.객관적인 C에서 공공 정적 변수를 선언하십시오.

@interface :UIViewController 
static bool isSearchWindowOpen ; //something like this. 
@end 

처럼 쓸 경우 잘 작동하지만, 자식 클래스에 의해 상속 될 수 없습니다

static bool isSearchWindowOpen ; 
@interface :UIViewController 
    @end 

.

pls.

+0

인터페이스 선언의 콜론은 무엇입니까? "상속 받는다"는 것은 무엇을 의미합니까? 변수를 표시하거나 각 (하위) 클래스가 자체 변수를 참조하도록 하시겠습니까? 당신이 성취하려는 것을 분명하지 않습니다. –

답변

0

선언 된 변수는 클래스와 아무 관련이 없습니다. 그것은 "C sense"에서 전역 정적입니다 : 같은 파일에있는 코드 만이 접근 할 수 있습니다. (See Wikipedia for details.) 당신은 클래스의 접근을 작성할 수 있습니다

static BOOL foo; 

+ (void) setFoo: (BOOL) newFoo 
{ 
    foo = newFoo; 
} 

그런 식으로 클래스의 자손도, 변수에 액세스 할 수 있습니다. 하지만 어쨌든 좋은 생각이 아닙니다. 어떤 문제를 해결하려고합니까?

1

C++과 같은 다른 프로그래밍 언어와 혼동하는 것처럼 들립니다. Objective-C에서 C와 마찬가지로 정적 변수는 파일 범위가있는 변수입니다. 헤더 파일에 정적 변수를 선언하면 해당 헤더 파일을 포함하는 모든 소스 파일에 정적 변수의 자체 사본이 있습니다.

당신은 아마 클래스 메소드를 대신 정적 변수에 의존, 검색 창이 열려 있는지 여부를 확인하는 코드를 작성하는 아마

static BOOL sSearchWindowOpen; 
+ (void)setSearchWindowOpen:(BOOL)open { sSearchWindowOpen = open; } 
+ (BOOL)isSearchWindowOpen { return sSearchWindowOpen; } 

더 나은 구현

+ (BOOL)isSearchWindowOpen 

을 싶어 항상 올바르게 추적해야합니다.

관련 문제