0

我在一个名为 SIAlertView 的开源库中遇到了一些代码,但我不确定它在做什么?特别是下面的两行?什么是 SIAleartViewHandler,因为它不是 SIAlertView 库中的类?

typedef void(^SIAlertViewHandler)(SIAlertView *alertView);
@property (nonatomic, copy) SIAlertViewHandler willShowHandler;

SIAlertView.h

typedef void(^SIAlertViewHandler)(SIAlertView *alertView);
@property (nonatomic, copy) SIAlertViewHandler willShowHandler;
@property (nonatomic, copy) SIAlertViewHandler didShowHandler;
@property (nonatomic, copy) SIAlertViewHandler willDismissHandler;
@property (nonatomic, copy) SIAlertViewHandler didDismissHandler;

SIAlertView.m

[self transitionInCompletion:^{
    if (self.didShowHandler) {
        self.didShowHandler(self);
    }
    [[NSNotificationCenter defaultCenter] postNotificationName:SIAlertViewDidShowNotification object:self userInfo:nil];

    [SIAlertView setAnimating:NO];

    NSInteger index = [[SIAlertView sharedQueue] indexOfObject:self];
    if (index < [SIAlertView sharedQueue].count - 1) {
        [self dismissAnimated:YES cleanup:NO]; // dismiss to show next alert view
    }
}];

#pragma mark - SIAlertItem

@interface SIAlertItem : NSObject

@property (nonatomic, copy) NSString *title;
@property (nonatomic, assign) SIAlertViewButtonType type;
@property (nonatomic, copy) SIAlertViewHandler action;

@end

@implementation SIAlertItem

@end
4

2 回答 2

3

第一行 ( typedef void(^SIAlertViewHandler)(SIAlertView *alertView);) 定义了一种块类型,称为SIAlertViewHandler

第二行 ( @property (nonatomic, copy) SIAlertViewHandler willShowHandler;) 定义了一个属性,该属性将存储该块类型的实例。

于 2013-08-04T17:51:47.560 回答
1

是的,这是一个块。

第一行是创建一个新类型以增加使用该块的一些理智(不必void(^)(SIAlertView *alertView)到处重复,您可以使用SIAlertViewHandler.

SIAlertView.m正在检查是否showHandler已设置,如果是,则调用该块。

于 2013-08-04T17:51:41.630 回答