OC 如何实现链式语法

申请一个别名属性xxName


@interface SCCModuleParam ()

@property (nonatomic, copy) NSString *paramName;

@property (nonatomic) SCCParamType paramType;

@property (nonatomic) BOOL isStrict;
@end

申明一个name方法.用xxName内部属性去接name方法

- (SCCModuleParam *(^)(NSString *))name {
    return ^SCCModuleParam *(NSString *name) {
        NSParameterAssert(name);
        self.paramName = name;
        return self;
    };
}

这样我们就可以实现.语法来访问name方法

大致效果如下

[moduleDes method:^(SCCModuleMethod * _Nonnull method) {
            [[method.name(@"open.present").selector(@selector(open_present:callback:)) parameters:^(SCCModuleParamEnumerator * _Nonnull enumerator) {
                enumerator.next.name(@"dic").type(SCCParamTypeMap);
                enumerator.next.name(@"block").type(SCCParamTypeBlock);
            }] resultType:SCCParamTypeObject];
 }];

你可能感兴趣的:(OC 如何实现链式语法)