永发信息网

在ios 中,代理的方法怎么实现

答案:1  悬赏:0  手机版
解决时间 2021-02-23 05:58
  • 提问者网友:感性作祟
  • 2021-02-22 05:50
在ios 中,代理的方法怎么实现
最佳答案
  • 五星知识达人网友:佘樂
  • 2021-02-22 06:00
委托代理(degegate),顾名思义,把某个对象要做的事情委托给别的对象去做。那么别的对象就是这个对象的代理,代替它来打理要做的事。反映到程序中,首先要明确一个对象的委托方是哪个对象,委托所做的内容是什么。
A的头文件:

[objc] view plain copy
#import

@protocol SecretGardenPicPopViewDelegate

@optional

- (void)timeTickOut:(BOOL)backToSecret;

@end

@interface SecretGardenPicPopView : UIView
{
id _delegate;
}

@property (nonatomic, assign) id delegate;

@end

A的 .m 文件

[objc] view plain copy
#import "SecretGardenPicPopView.h"
#import "AppDelegate.h"

@implementation SecretGardenPicPopView

@synthesize delegate = _delegate;

- (void)dealloc
{
self.delegate = nil;
[super dealloc];
}

- (void)changeTimeTextLabel:(NSTimer *)timer
{
NSLog(@"===计数===>%d",_timeCount);
if (0 <= _timeCount) {
_timeLab.text = [NSString stringWithFormat:@"%d''", _timeCount];
} else {
[timer invalidate];
NSLog(@"代理===>%p",_delegate);
if (_delegate && [_delegate respondsToSelector:@selector(timeTickOut:)]) { //只有当代理存在,且timeTickOut方法被实现的时候才执行下面的语句
NSLog(@"执行代理");
[_delegate timeTickOut:NO];
}
}
_timeCount -= 1;
}

@end

B的头文件:

[objc] view plain copy
#import "SecretGardenPicPopView.h" //A的头文件

@interface SecretGardenController : BaseController //A的代理

@end

B的 .m文件:

[objc] view plain copy
- (void)timeTickOut:(BOOL)backToSecret
{
//Do Something
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯