이 문제에 대해서는 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];
다른 클래스의 메소드를 호출 할 수 있습니다. 이게 당신을 도울 수 있기를 바랍니다.
클래스 메서드를 호출하는 메서드가 있습니까? 메쏘드를 선언 할 때 + 앞에 (+ (void) classMethod : (id) sender) 메쏘드는 클래스 메쏘드를 의미하며 [ClassOne classMethod : self]로만 호출 할 수 있고, 앞에 - (- (void) instanceMethod : (id) sender)는 ClassOne에 의해 호출 될 인스턴스 메소드를 나타냅니다. * classOne = [[ClassOne alloc] init]; [classOne instanceMethod : self]; – Echihl
해당 변수를 할당 했습니까? –
두 번째 경우에 아마도'ClassOne.h'를 가져 오시겠습니까? ClassTwo.m의 상단에 가져 오기를하면 첫 번째 버전도 작동합니다. –