Q:

Simple custom delegate not getting called

Let's see if you guys can find the error here... because I'm really stuck right now.
DBManager.h
@protocol DBManagerDelegate <NSObject>
@optional
- (void)    managerDidFinishUpdating:(id)controller;
@end
@interface DBManager : NSObject
@property (strong, nonatomic) id <DBManagerDelegate> delegate;
- (id)  init;
@end

DBManager.m
#import "DBManager.h"
@implementation DBManager
- (id)init {
     self = [super init];
     if (self) {
        [[self delegate] managerDidFinishUpdating:self];
     }
     return self;
} 

UIViewController.h
#import <UIKit/UIKit.h>
#import "DBManager.h"
@interface DBViewController : UIViewController <DBManagerDelegate>
@property (nonatomic, retain) DBManager *manager;
@end

UIViewController.m
#import "DBViewController.h"
@implementation DBViewController
- (void)viewDidLoad
{
    [super viewDidLoad];
_manager = [[DBMataroManager alloc] init];
    [_manager setDelegate:self];
}
- (void)managerDidFinishUpdating:(id)controller {
    NSLog(@"Manager did finish");
}
@end

A:

You should write like this,

- (id)initWithDelegate:(id)delegate {
    self = [super init];
    if (self) {
        _delegate = delegate;
        [_delegate managerDidFinishUpdating:self];
    }
    return self;
}

//Call it as follow
_manager = [[DBManager alloc] initWithDelegate:self];
[_manager setDelegate:self];

