Я просматривал несколько примеров кода и наткнулся на это приложение, в котором есть следующие классы
1) FaceView Class - рисует лицо и настраиваемую улыбку 2) HappinessViewContoller Class - устанавливает улыбку на лице, нарисованную на основе ввода ползунка в интерфейсе.
Программа фактически реализует протокол делегата в классе 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?
Спасибо!
Чжэнь Хоэ