나는 objective-C에서 정적 변수에 대한 연구를했고 사람들이 다른 곳에서 정적 변수를 선언함으로써 나를 혼란스럽게 만들었다.objective-c에서 정적 변수를 어디에 선언해야합니까?
다음 코드의 경우 구현 외부에
static NSUInteger counter;
을 넣을 수 있습니까? (오른쪽 내 # import를 "xxx.h"후)나는 내부
static NSUInteger counter;
을 넣어 + 클래스 메소드를 초기화 할 수 있나요?는 내가 인스턴스 메소드에
static NSUInteger counter;
를 할 수 있나요?가장 중요한 차이를 어떻게 어디를 선언하는 방법을 선택하는 방법은 무엇입니까?
고마워요!
@implementation MyClass
static NSUInteger counter;
+(void)initialize {
if (self == [MyClass class]) {
counter = 0;
}
}
@end
항상 가져 오기 문 아래에 있습니다. – rounak
정적 변수를 명시 적으로 0으로 초기화 할 필요가 없습니다. 명시 적으로 다른 값으로 초기화되지 않으면 모든 정적 변수가 자동으로 0으로 초기화됩니다. 또한 초기화를 명시 적으로하고 싶었더라도 대개'+ initialize' 메소드를 사용할 필요가 없습니다. 그냥'status NSUInteger counter = 1; '과 같은 정의에서 이니셜 라이저 표현식을 사용하십시오. '+ initialize'와 같은 동적 인 테크닉을 사용해야 할 유일한 이유는 컴파일 타임 상수가 아닌 값으로 초기화하고자하는 경우입니다. –