title: Why does subclassing the main ViewController's view causes delegates to never fire?
body: <p>I made a <strong>customView</strong> that implements its own <strong>delegate</strong> and set it up inside the main  <strong>viewController</strong>. It works perfectly well, it's the standard practice, there's no need to show any code.</p>
  <p>For the sake of better organizing the code I created a manager called <strong>customManager</strong> that contains the <strong>customView</strong> and the main viewController's <strong>view</strong>.</p>
  <p>Instead of having all the code that it's needed inside the viewController (managing how the customView is setup and also listening to its delegate) I moved all that code to the customManager instead. That's why I made the customManager just to clear up the code that's inside the viewController.</p>
  <p>All renders properly but the delegate never fires.</p>
  <p><strong>CustomManager.h</strong></p>
  <pre><code>#import &quot;CustomView.h&quot;
  
  @interface CustomManager : NSObject &lt;CustomViewDelegate&gt;
  
  @property (weak) UIView *view; // viewController's view
  
  @property (strong) CustomView *customView;
  
  - (void)load;
  
  @end
  </code></pre>
  <p><strong>CustomManager.m</strong></p>
  <pre><code>#import &quot;CustomManager.h&quot;
  
  @implementation CustomManager
  
  // Initialization Method
  
  - (void)load {
  
      _customView = [[CustomView alloc] init];
  
      _customView.delegate = self; // !!!
  
      _customView.frame = CGRectMake(0.0, 20.0, _view.frame.size.width, _view.frame.size.height - 20.0);
  
      [_view addSubview:_customView];
  }
  
  #pragma mark - CustomViewDelegate
  
  // Delegate Methods
  
  @end
  </code></pre>
  <p><strong>ViewController.h</strong></p>
  <pre><code>#import &quot;CustomManager.h&quot;
  
  @interface ViewController : UIViewController
  
  @property (strong) CustomManager *customManager;
  
  @end
  </code></pre>
  <p><strong>ViewController.m</strong></p>
  <pre><code>#import &quot;ViewController.h&quot;
  
  @interface ViewController ()
  
  @end
  
  @implementation ViewController
  
  - (void)viewDidLoad {
      
      [super viewDidLoad];
      
      // Do any additional setup after loading the view.
  
      _customManager = [[CustomManager alloc] init];
  
      _customManager.view = self.view;
  
      [_customManager load];
  
      // 1. The load method above removes the code needed here for initializing the customView and setting it up correctly.
      // 2. The delegate methods are now in the customManager and leave the space below clear.
  }
  
  @end
  </code></pre>