title: UIButton addTarget:action:forControlEvents: results in [NSObject doesNotRecognizeSelector:]
body: <p>I tried a lot of stuff, still no result.</p>
  
  <p>So I have the following button created programatically in a subclass of UIViewController:</p>
  
  <pre><code>    rightButton = [UIButton buttonWithType:UIButtonTypeCustom];
      rightButton.frame = CGRectMake(0.0, 0.0, 110.0, 40.0);
      rightButton.titleLabel.font = [UIFont fontWithName:GAME_FONT_NAME_STRING size:20.0];
      [rightButton setTitle:@"MyTitle" forState:UIControlStateNormal];
      rightButton.backgroundColor = [UIColor clearColor];
      [rightButton setTitleColor:[UIColor greenColor] forState:UIControlStateNormal];
      [rightButton setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];
      [rightButton setBackgroundImage:normalImage forState:UIControlStateNormal];
      [rightButton setBackgroundImage:highlightedImage forState:UIControlStateHighlighted];
      [rightButton addTarget:self action:@selector(myButton) forControlEvents:UIControlEventTouchUpInside];
      [self.view addSubview:rightButton];
  </code></pre>
  
  <p>where the selector is:</p>
  
  <pre><code>- (void)myButton;
  </code></pre>
  
  <p>I tried everything:</p>
  
  <pre><code>- (void)myButton;
  - (void)myButton:(id)sender;
  - (void)myButton:(id)sender forEvent:(UIEvent *)event;
  - (IBAction)myButton;
  - (IBAction)myButton:(id)sender;
  - (IBAction)myButton:(id)sender forEvent:(UIEvent *)event;
  </code></pre>
  
  <p>and the corresponding selectors, of course:</p>
  
  <pre><code>[rightButton addTarget:self action:@selector(myButton) forControlEvents:UIControlEventTouchUpInside];
  [rightButton addTarget:self action:@selector(myButton:) forControlEvents:UIControlEventTouchUpInside];
  [rightButton addTarget:self action:@selector(myButton:forEvent:) forControlEvents:UIControlEventTouchUpInside];
  [rightButton addTarget:self action:@selector(myButton) forControlEvents:UIControlEventTouchUpInside];
  [rightButton addTarget:self action:@selector(myButton:) forControlEvents:UIControlEventTouchUpInside];
  [rightButton addTarget:self action:@selector(myButton:forEvent:) forControlEvents:UIControlEventTouchUpInside];
  </code></pre>
  
  <p>The result is always an uncaught exception - [NSObject doesNotRecognizeSelector:]. However, the usual backtrace of the program is:</p>
  
  <pre><code>#0  0x92a6bedb in objc_msgSend ()
  #1  0x03b0a430 in ?? ()
  #2  0x00306b4e in -[UIControl sendAction:to:forEvent:] ()
  #3  0x00308d6f in -[UIControl(Internal) _sendActionsForEvents:withEvent:] ()
  #4  0x00307abb in -[UIControl touchesEnded:withEvent:] ()
  #5  0x002bcddf in -[UIWindow _sendTouchesForEvent:] ()
  #6  0x002a67c8 in -[UIApplication sendEvent:] ()
  #7  0x002ad061 in _UIApplicationHandleEvent ()
  #8  0x02498d59 in PurpleEventCallback ()
  #9  0x01cabb80 in CFRunLoopRunSpecific ()
  #10 0x01caac48 in CFRunLoopRunInMode ()
  #11 0x02497615 in GSEventRunModal ()
  #12 0x024976da in GSEventRun ()
  #13 0x002adfaf in UIApplicationMain ()
  </code></pre>
  
  <p>So what is the problem with that button?</p>
  
  <p>PS: I am using the iPhone SDK 3.1.3</p>
  
  <hr>
  
  <p>Update!</p>
  
  <p>The following code in the AppDelegate (no declarations in the interface):</p>
  
  <pre><code>- (void)applicationDidFinishLaunching:(UIApplication *)application {
      UIButton *test = [[UIButton alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 100.0)];
      [test setTitle:@"Title" forState:UIControlStateNormal];
      UIImage *bg = [UIImage imageNamed:...];
      [test setBackgroundImage:bg forState:UIControlStateNormal];
      [test addTarget:self action:@selector(testAction) forControlEvents:UIControlEventTouchUpInside];
      [window addSubview:test];
      [test release];
      [window makeKeyAndVisible];
  }
  
  - (void)testAction {
      NSLog(@"Write something...");
  }
  </code></pre>
  
  <p>works perfectly!</p>
  
  <p>But if I create an empty UIViewController with the same code:</p>
  
  <pre><code>- (void)viewDidLoad {
      UIButton *test = [[UIButton alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 100.0)];
      [test setTitle:@"Title" forState:UIControlStateNormal];
      UIImage *bg = [UIImage imageNamed:...];
      [test setBackgroundImage:bg forState:UIControlStateNormal];
      [test addTarget:self action:@selector(testAction) forControlEvents:UIControlEventTouchUpInside];
      [self.view addSubview:test];
      [test release];
      [window makeKeyAndVisible];
  }
  
  - (void)testAction {
      NSLog(@"Write something...");
  }
  </code></pre>
  
  <p>I get this mysterious error. :-( Help!</p>