2012-02-15 2 views
0

이전에 뷰 컨트롤러였던 클래스를 만들려고합니다. 그것은 단지 몇 가지 데이터베이스 설정 호출을 포함합니다. 내 연구에서 클래스 메서드를 제대로 정의하지 않았기 때문에 "메서드에 대한 알려진 클래스가 없습니다 ..."오류가 발생한다는 것을 발견했습니다. 나는했다 Heres는 무엇을 :클래스 메서드의 인스턴스 변수 (실행 불가능)

classA.h 
    +(void)databaseBuild; 

    classA.m 

    +(void)databaseBuild 
     { 
     ... 
     } 

그러나, 내가 지금 수신하고하는 것은 오류의 적재량이다

View1.m 
... 
[view2 databseBuild]; 
... 

classA.h 
-(void)databaseBuild; 

classA.m 
-(void)databaseBuild 
     { 
     ... 
     } 

이것은 내가 내 클래스를 변경하는 것이다. 그들 모두 인스턴스 변수 '변수없는 이러한 유형의 오류를 방지하기 위해 클래스를 만들기위한 가장 좋은 방법 ""클래스 메소드에 액세스은. A는 거기에 "기본적으로 주위에? 목표 - C 방법에 대한

+0

어떻게 이러한 메서드를 호출합니까? – joerick

+0

클래스 메서드에서 인스턴스 변수에 액세스 할 수 없습니다. 인스턴스를 사용할 수있는 인스턴스가 없습니다. 당신이하고있는 일에 대해 자세히 설명해 주시겠습니까? 이 메소드의 내용을 포함 할 수 있습니까? –

답변

0

- (void)method {} 

것 다음과 같이 사용할 수있는 인스턴스 생성 방법 :

MyClass *instance = [MyClass alloc] init]; 
[instance method] 

을하면서 한편

+ (void)method {} 

는 호출 할 수있는 클래스의 방법을 만들 것입니다 : 당신이 사실로 인해받는

[MyClass method] 

오류를 그 존재 목적-C의 클래스 변수로 그런 일 없다 (그러나 당신이 정적 변수를 만들 수 있습니다 글로벌 해결 방법)

+0

일반적으로 클래스 메소드는 자동 반전 된 인스턴스 객체를 반환하는 팩토리 메소드로 사용됩니다. – richerd

0

+(void)databaseBuild;은 클래스 메서드입니다. 너는 [MyClass databaseBuild];으로 전화한다. 클래스 메소드는 객체와 독립적으로 작동하는 메소드입니다. 예를 들어 [NSArray arrayWithObject:]은 클래스 메소드입니다.

-(void)databaseBuild;은 인스턴스 메소드입니다. [myClassInstance databaseBuild];으로 호출합니다. 대부분 객체 인스턴스와 상호 작용하는 데 사용됩니다. (예 : [myArray objectAtIndex:])

[view2 databseBuild];은 인스턴스 메소드 호출을 사용한다고 말했습니까?

[view1 databaseBuild]를 사용하려고 시도한 파일에 # 헤더 파일을 삽입하는 것으로 충분했을 가능성이 큽니다.

보트로드로 인해 클래스 메서드에서 인스턴스 변수 나 @ 속성에 액세스 할 수 없다는 메시지가 나타납니다.

관련 문제