Вставка subView - iPhone - PullRequest
       1

Вставка subView - iPhone

0 голосов
/ 07 июня 2011
- (void)viewDidLoad {

    BlueViewController *blueController = [[BlueViewController alloc] initWithNibName@"BlueView" bundle:nil];
    self.blueViewController = blueController; //blueViewController set to var above

    [self.view insertSubview:blueController.view atIndex:0];
    [blueController release];
    [super viewDidLoad];
}

не очень хорошо понимает этот код. Почему я вставляю подпункт blueController, а не self.blueViewController

также, какая разница, если я не использую себя. Даже не уверен, почему используется сам. Я интерпретирую это, поскольку я устанавливаю свойство blueViewController текущего View Controller для экземпляра blueController, но зачем мне это делать. Книга, из которой я читаю, не объясняет такие вещи подробно. Это в значительной степени обезьяна делает это.

Ответы [ 4 ]

0 голосов
/ 07 июня 2011

blueController - это выделенный и инициализированный объект, в то время как blueViewController - просто указатель на класс BlueViewController. Написание

self.blueViewController = blueController

вы сохраняете объект blueController. Если вы не используете self, вы не будете ратиновать объект и после того, как отпустите его в строке

[blueController release];

Ваша программа вылетит, как только вы снова к ней обратитесь.

0 голосов
/ 07 июня 2011

При инициализации переменной мы должны использовать self. Это увеличит blueViewController retainCount до 1.

self.blueViewController = blueController;

При вставке также вы можете использовать оба. Результаты будут такими же.

[self.view insertSubview: blueController.view atIndex: 0];
[self.view insertSubview: self.blueController.view atIndex: 0];

0 голосов
/ 07 июня 2011

не очень хорошо понимает этот код. Почему я вставляю подпункт blueController, а не self.blueViewController

с тех пор как вы выполнили задание:

 self.blueViewController = blueController;

эти две переменные одинаковы, поэтому

 [self.view insertSubview:self.blueController.view atIndex:0];

будет таким же, как и код, который вы опубликовали.

также, какая разница, если я не использую себя. Даже не уверен, почему используется сам. Я интерпретирую это, поскольку я устанавливаю свойство blueViewController текущего View Controller для экземпляра blueController, но зачем мне это делать. Книга, из которой я читаю, не объясняет такие вещи подробно. Это в значительной степени обезьяна делает это.

если вы не присваиваете self.blueController, тогда ваша переменная - это просто простая переменная, локальная для этой функции. Имея свойство self.blueController и сохраняя там значение, вы можете использовать это значение во всех селекторах (функциях) вашего класса.

проверьте код, и вы увидите, что self.blueController используется и в других функциях. например, в какой-то момент вы можете решить, что вам нравится делать это подпредставление скрытым, или вы хотите удалить его и т. д. Все это вы можете сделать, только если у вас есть указатель на контроллер, доступный для ваших функций класса.

0 голосов
/ 07 июня 2011

self используется, если вы ссылаетесь на объект класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...