platform :ios, '7.0'
    pod 'DecouplingKit', '~> 0.0.2'

DecouplingKit, decoupling between modules in your iOS Project.

DDKServiceManager, used to load the service list DKService.plist, the service is a business's protocol. DKService.plist includes service and impl, service is protocol, impl is the implementation of the protocol class.

DecouplingKit is based on [BeeHive] (, Another way to decouple is the runtime, such as [CTMediator] (, this is a very good program.


Register the default DKService.plist service list

    [[DKServiceManager sharedInstance] registerLocalServices];

Register a list of custom paths for services

    [[DKServiceManager sharedInstance] registerLocalServicesWithServiceConfigName:@"DecouplingKit.bundle/DKService"];


    id<Bussiness2ServiceProtocol> bussiness2 =[[DKServiceManager sharedInstance] createInstance:@protocol(Bussiness2ServiceProtocol)];

    NSDictionary *data =[bussiness2 fetchBussiness2DataWithName:@"DecouplingKit" age:@"1"];

Create a class and then call the corresponding class method

   Class Bussiness2 = [[DKServiceManager sharedInstance] createClass:@protocol(Bussiness2ServiceProtocol)];

    [Bussiness2 callClassMethod];

Create a service protocol for your business class

@protocol Bussiness2ServiceProtocol <DKServiceProtocol>
@property (nonatomic,copy) NSString *name;
- (NSDictionary *)fetchBussiness2DataWithName:(NSString *)name age:(NSString *)age;
+ (void)callClassMethod;



All source code is licensed under the MIT License.


decoupling between modules in your iOS Project. iOS模块化过程中模块间解耦方案

Decouplingkit Info

⭐ Stars 133
🔗 Homepage
🔗 Source Code
🕒 Last Update 2 years ago
🕒 Created 5 years ago
🐞 Open Issues 0
➗ Star-Issue Ratio Infinity
😎 Author coderyi