Welcome to the documentation for the A2DynamicDelegate framework! This framework provides a modern approach to handle dynamic delegation in Objective-C projects.

What is A2DynamicDelegate?

A2DynamicDelegate is an Objective-C library that simplifies and enhances delegation in your iOS or macOS projects. It allows you to create delegate implementations at runtime without the need for explicit protocols or delegate classes.

Key Features

  • Dynamic delegation: Generate delegate implementations dynamically at runtime.
  • No need for explicit protocols: No need to declare and adopt protocols for delegation.
  • Minimizes boilerplate code: Allows your code to be more concise and maintainable.
  • Supports both iOS and macOS platforms.


To install A2DynamicDelegate in your project, follow these steps:

  1. Download the latest version of A2DynamicDelegate from the GitHub repository.
  2. Drag and drop the A2DynamicDelegate folder into your Xcode project.
  3. Make sure the A2DynamicDelegate folder is added to your target’s dependencies.

That’s it! You’re now ready to start using A2DynamicDelegate in your project.


Here’s how you can use A2DynamicDelegate:

Step 1: Importing the framework

Import the A2DynamicDelegate framework into your class:

// Objective-C
@import A2DynamicDelegate;

// Swift
import A2DynamicDelegate

Step 2: Creating a dynamic delegate

Create a dynamic delegate object in your class:

// Objective-C
@property (nonatomic, strong) A2DynamicDelegate *dynamicDelegate;

// Swift
var dynamicDelegate: A2DynamicDelegate!

Step 3: Implementing delegation methods

Add delegation methods using the A2DynamicDelegate syntax:

// Objective-C
[self.dynamicDelegate implementMethod:@selector(myDelegateMethod:) withBlock:^(id delegate, NSString *param) {
    NSLog(@"Delegate method called with parameter: %@", param);

// Swift
dynamicDelegate.implement(method: #selector(MyProtocol.myDelegateMethod(_:))) { delegate, param in
    print("Delegate method called with parameter: \(param)")

Step 4: Assigning the dynamic delegate

Assign the dynamic delegate to your actual delegate object:

// Objective-C
myObject.delegate = self.dynamicDelegate;

// Swift
myObject.delegate = dynamicDelegate

Additional Notes

  • The dynamic delegate will call any implemented delegation methods.
  • You can use A2DynamicDelegate with both Objective-C and Swift projects.
  • You can remove an implementation for a specific method if needed.
  • The dynamic delegate can be used for multiple delegates in a single class.


Congratulations! You’ve learned how to use A2DynamicDelegate to simplify and enhance delegation in your iOS or macOS projects. Enjoy its benefits and happy coding!