Objective-C вызывает метод делегата из класса, где метод делегата находится в другом классе - PullRequest
0 голосов
/ 16 декабря 2011

Если у меня есть делегат, который находится в его собственном заголовочном файле myDelegate.h. Затем у меня есть класс (ClassOne), который реализует протокол делегата (следовательно, реализуя функцию (функции) делегата). Затем я создаю другой класс (ClassTwo), который имеет переменную экземпляра myDelegate. Могу ли я затем использовать эту переменную для вызова функции, которая находится в ClassOne?

Вот код:

//myDelegate.h
@protocol myDelegate <NSObject>

- (BOOL)myFunction:(NSString*)sString;

@end


//ClassOne.h
@interface ClassOne : NSObject <myDelegate> {

}

- (BOOL)myFunction:(NSString*)sString;

@end

//ClassOne.m
#import "ClassOne.h"
@implementation ClassOne

- (BOOL)myFunction:(NSString*)sString
{
    //do stuff
}

@end


//ClassTwo.h
#import "myDelegate.h"
@interface ClassTwo : NSObject {
    id<myDelegate> del;
}

@property (nonatomic, retain) id<myDelegate> del;

@end

//ClassTwo.m
#import "ClassTwo.h"
@implementation ClassTwo

- (void)aFunction:(NSString*)string
{
    [del myFunction:string];
}

@end

1 Ответ

0 голосов
/ 16 декабря 2011

Да, это совершенно верно.

За исключением myDelegate должно быть MyDelegate. Это не синтаксическая ошибка, и она будет отлично выполняться, но стандартные соглашения с целью говорят, что вы никогда не должны определять делегата с первым символом в нижнем регистре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...