Я просматривал несколько примеров кода и наткнулся на это приложение, которое имеет следующие классы
1) FaceView Class - рисует лицо и настраиваемую улыбку
2) Класс HappinessViewContoller - устанавливает улыбку на лице, нарисованном на основе ввода ползунка в интерфейсе.
Программа фактически реализует протокол делегата в классе FaceView.h, как показано ниже
#import <UIKit/UIKit.h>
@class FaceView;
@protocol FaceViewDelegate
- (float)smileForFaceView:(FaceView *)requestor; // -1.0 (frown) to 1.0 (smile)
@end
@interface FaceView : UIView {
id <FaceViewDelegate> delegate;
}
@property (assign) id <FaceViewDelegate> delegate;
@end
и HappinessViewController заявляет, что использует FaceViewDelegate
#import <UIKit/UIKit.h>
#import "FaceView.h"
@interface HappinessViewController : UIViewController <FaceViewDelegate>
{
int happiness; // 0 to 100
UISlider *slider;
FaceView *faceView;
}
@property int happiness;
@property (retain) IBOutlet UISlider *slider;
@property (retain) IBOutlet FaceView *faceView;
- (IBAction)happinessChanged:(UISlider *)sender;
@end
Я немного запутался, почему в этом сценарии требуется протокол делегата. Могу ли я просто установить метод "- (float) smileForFaceView: (FaceView *) requestor;" непосредственно в HappinessViewController без объявления делегата для faceView?
Спасибо!
Жень Мотыга