How does UIButton addTarget self work?
<p>I try figure out why <code>self</code> point to the GameViewController instead of Answer</p>

<p><strong>GameViewController.swift</strong></p>

<pre><code>class GameViewController: UIViewController {
    var gameplay = QuestionsController(colors: colors)

    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.addSubview(gameplay.answersController.answers[0].button)
    }

    func didPressAnswerButton(sender: UIButton!) {
        sender.setTitle("Im from GameViewController class", forState: .Normal)
    }
}
</code></pre>

<p><strong>QuestionsController.swift</strong></p>

<pre><code>class QuestionsController {
    var question: Question
    var answersController: AnswersController
}
</code></pre>

<p><strong>AnswersController.swift</strong></p>

<pre><code>class AnswersController {
    var answers = [Answer]()

    func prepareAnswers() {
        let answer = Answer()
        answers.append(answer)
    }
}
</code></pre>

<p><strong>Answer.swift</strong></p>

<pre><code>class Answer{
    let button: UIButton

    func prepareButton() {
        let answerButton = AnswerButton(type: .System)
        answerButton.addTarget(self, action: "didPressAnswerButton:", forControlEvents: .TouchUpInside)
        button = answerButton
    }

    func didPressAnswerButton(sender: UIButton!) {
        sender.setTitle("Im from Answer class", forState: .Normal)
    }
}
</code></pre>