iOS-대표
대리자 예
객체 A가 작업을 수행하기 위해 B를 호출한다고 가정합니다. 작업이 완료되면 객체 A는 객체 B가 작업을 완료했음을 알아야 하며 객체 A는 다른 필요한 작업을 수행합니다.
위 예제의 핵심 개념은 다음과 같습니다.
- A는 B의 위임 개체입니다.
- B는 A를 참조합니다.
- A는 B의 위임 메서드를 구현합니다.
- B는 위임 메서드를 통해
에 알리고 위임을 생성합니다. (대리자) 개체
1. 단일 보기 애플리케이션을 만듭니다.
2. 그런 다음 파일 -> 새로 만들기 -> 파일...
3을 선택하고 다음을 클릭합니다.
4.
5. 그런 다음 Create를 선택합니다.
6. SampleProtocol.h 폴더에 프로토콜을 추가하고 아래와 같이 코드를 업데이트합니다.
#import <Foundation/Foundation.h>// 协议定义@protocol SampleProtocolDelegate <NSObject>@required- (void) processCompleted;@end// 协议定义结束@interface SampleProtocol : NSObject{ // Delegate to respond back id <SampleProtocolDelegate> _delegate; }@property (nonatomic,strong) id delegate;-(void)startSampleProcess; // Instance method@end
7. SampleProtocol.m 파일을 수정합니다. 인스턴스 메서드를 구현하는 코드:
#import "SampleProtocol.h"@implementation SampleProtocol-(void)startSampleProcess{ [NSTimer scheduledTimerWithTimeInterval:3.0 target:self.delegate selector:@selector(processCompleted) userInfo:nil repeats:NO];}@end
8. 아래와 같이 개체 라이브러리의 레이블을 UIView로 끌어서 ViewController.xib에 UILabel을 추가합니다.
9. IBOutlet 레이블을 만들고 이름을 myLabel로 지정합니다. 아래와 같이 코드를 업데이트하고 ViewController.h
#import <UIKit/UIKit.h>#import "SampleProtocol.h"@interface ViewController : UIViewController<SampleProtocolDelegate>{ IBOutlet UILabel *myLabel;}@end
10에 SampleProtocolDelegate를 표시합니다. 인증 메서드를 완료하고 SampleProtocol에 대한 객체를 생성한 다음 startSampleProcess 메서드를 호출합니다. 아래와 같이 ViewController.m 파일을 업데이트합니다.
#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad{ [super viewDidLoad]; SampleProtocol *sampleProtocol = [[SampleProtocol alloc]init]; sampleProtocol.delegate = self; [myLabel setText:@"Processing..."]; [sampleProtocol startSampleProcess];// Do any additional setup after loading the view, typically from a nib.}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}#pragma mark - Sample protocol delegate-(void)processCompleted{ [myLabel setText:@"Process Completed"];}@end
11. 아래와 같은 출력이 표시됩니다. SampleProtocol 개체에 의해 인증 메서드가 호출되면 태그 실행기 코드도 업데이트됩니다. .