1. 在implement中通过delegate对象来执行操作时,必须保证自身是初始化完成的。

反例:


@implementation QWCCycleBannerView

-(instancetype)initWithFrame:(CGRect)frame{
    
    self = [super initWithFrame:frame];
    
    if (self) {
        
        if ( [_dataSource respondsToSelector:@selector(imageURLStringArray)]) {
            
            _imageURLStringArray = [NSArray arrayWithArray:[_dataSource imageURLStringArray]];
        }
                }
    return self;
}

...
@end

该代码中,QWCCycleBannerView 自身未初始化完成,其delegate仍为 0x0(打印出来查看到)。
该例中,将调用delegate的方法移到了 -layoutSubviews中,即能够成功调用。

delegate 代理模式需注意事项

发表评论

电子邮件地址不会被公开。 必填项已用*标注

浙公网安备 33010602005964号