2013-01-23 5 views
0

호출 클래스에서 전달 선언을 사용하고 있습니다. ClassTwo다른 클래스의 메서드를 호출 할 수 없습니다.

에서

.H 파일

@class ClassOne 

@property(nonatomic,retain) ClassOne *class_One; 

내가 다른 한편으로 ClassOne

[self.class_One callingThisMethodFromClassTwo]; 

에서이 메소드를 호출하려고 그런

@synthesize class_One; 

하는 .m 파일 내가 만들면 손으로 ClassOne에서 인스턴스를 hared 내가 class_One 인스턴스를 할당하고 classtwo.m 위에 헤더에 #import "ClassOne.h"을 추가하는 아주 새로운

+0

클래스 메서드를 호출하는 메서드가 있습니까? 메쏘드를 선언 할 때 + 앞에 (+ (void) classMethod : (id) sender) 메쏘드는 클래스 메쏘드를 의미하며 [ClassOne classMethod : self]로만 호출 할 수 있고, 앞에 - (- (void) instanceMethod : (id) sender)는 ClassOne에 의해 호출 될 인스턴스 메소드를 나타냅니다. * classOne = [[ClassOne alloc] init]; [classOne instanceMethod : self]; – Echihl

+0

해당 변수를 할당 했습니까? –

+0

두 번째 경우에 아마도'ClassOne.h'를 가져 오시겠습니까? ClassTwo.m의 상단에 가져 오기를하면 첫 번째 버전도 작동합니다. –

답변

1

시도 나는이 바보 같은 질문 인 경우가

[[ClassOne Shared] nowItWorks]; 

죄송 작동하는 클래스 메소드로 사용 [self.class_One callingThisMethodFromClassTwo];이 실패하면

self.class_One= [[ClassOne alloc]init]; 
[self.class_One callingThisMethodFromClassTwo]; 
0

...이 직접적으로 의미하는

  1. class_One은 alloc + init-ed가 아닙니다.

  2. callingThisMethodFromClassTwo은 개인/보호 된 방법입니다.

  3. callingThisMethodFromClassTwo은 클래스 메소드입니다.

0

이 문제에 대해서는 Protocol/Delegate을 사용할 것을 권장합니다.

클래스에 대한 대리자 프로토콜을 선언해야합니다. Foo 클래스에 대한 위임 프로토콜 및 인터페이스의 예는이 방법으로 할 수 있습니다

@protocol의 MyClassDelegate 그들이 //를 구현해야하는 대리자를 사용하려는 경우

// 필수 의미한다. @required // 다른 클래스에서 호출 할 메서드. - (void) taskComplete : (BOOL) 완료; @end

@interface하면 MyClass : NSObject의 { 는 // 우리는이 ID ID 위임입니다 그 이유는, 시간을 컴파일 // 에서 우리를 채택 할 것입니다 클래스의 종류를 알 수없는; }

@property (비 원자, 할당) id delegate;

  • (void) taskComplete;
  • (void) doSomeTask;

는 복잡한 프로젝트가이 같은 경우 위임을 구현하는 최선의 방법이 될 것입니다에, 당신의 클래스 사이 연계를 많이 만들지 않으 가정하자. 그것은 함수 포인터 광고 콜백을 갖는 것과 같지만, 통신은 쉽게 양방향으로 진행됩니다. 우리의 프로토콜을 채택하고 실제로 그것을 수업에서 사용할 시간.

myClass = [[MyClass alloc] init]; 
// Very important. If we don't let myClass know who the delegate 
// is we'll never get the protocol methods called to us. 
[myClass setDelegate:self]; 

다른 클래스의 메소드를 호출 할 수 있습니다. 이게 당신을 도울 수 있기를 바랍니다.

관련 문제