casatwy / CTMediator

The mediator with no regist process to split your iOS Project into multiple project.
Other
4k stars 776 forks source link

你好,swift 4.2,调用不到主项目的方法 #32

Closed fengzhihao123 closed 6 years ago

fengzhihao123 commented 6 years ago
if ([target respondsToSelector:action]) {
        return [self safePerformAction:action target:target params:params];
    } else {
        // 这里是处理无响应请求的地方,如果无响应,则尝试调用对应target的notFound方法统一处理
        SEL action = NSSelectorFromString(@"notFound:");
        if ([target respondsToSelector:action]) {
            return [self safePerformAction:action target:target params:params];
        } else {
            // 这里也是处理无响应请求的地方,在notFound都没有的时候,这个demo是直接return了。实际开发过程中,可以用前面提到的固定的target顶上的。
            [self NoTargetActionResponseWithTargetString:targetClassString selectorString:actionString originParams:params];
            [self.cachedTarget removeObjectForKey:targetClassString];
            return nil;
        }
    }

此处判断走的是else,不知道是什么原因,之前swift4.0的时候代码是可以运行的。

casatwy commented 6 years ago

在swift下,params需要带一个参数kCTMediatorParamsKeySwiftTargetModuleName,value是target所在项目的项目名。

因为swift4.2需要带上命名空间才能找到target

fengzhihao123 commented 6 years ago

非常感谢