在看源码的时候发现了这样一个疑惑:
- (void)setMenuState:(MFSideMenuState)menuState completion:(void (^)(void))completion {
void (^innerCompletion)() = ^ {
_menuState = menuState;
[self setUserInteractionStateForCenterViewController];
MFSideMenuStateEvent eventType = (_menuState == MFSideMenuStateClosed) ? MFSideMenuStateEventMenuDidClose : MFSideMenuStateEventMenuDidOpen;
[self sendStateEventNotification:eventType];
if(completion) completion();
};
}
注意最后一行代码: if (completion) completion() ,刚开始的时候对这行代码很疑惑,因为:completion是一个block,那么它带小括号和不带小括号的区别是什么?
带小括号则是执行代码段,不带小括号则是作为参数
这句代码的意思就是:如果completion不为nil,则执行这个block;