Свойства IBOutlets. Выпуск или не выпуск - PullRequest
0 голосов
/ 29 марта 2012

Я разрабатываю приложение для iOS 4.

У меня есть этот ViewController:

@interface BlogViewController : UIViewController 
{
    ...

    UIView* tabBar;
}

@property (nonatomic, retain) IBOutlet UIView* tabBar;

И его реализация:

И его реализация:

@implementation BlogViewController

@synthesize tabBar;

- (void) dealloc
{
    ...

    [super dealloc];
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
    self.tabBar = nil;
}

Мой вопрос, если у меня есть свойство IBOutlet, нужно ли объявлять UIView как это?

@interface BlogViewController : UIViewController 
{
    ...

    UIView* tabBar;
}

Если я сделаю это, нужно ли мне выпустить это на dealloc?

- (void) dealloc
    {
        ...
        [tabBar release];

        [super dealloc];
    }

Ответы [ 3 ]

3 голосов
/ 29 марта 2012

По порядку: нет, вам не нужно объявлять переменную экземпляра, да, вам нужно освободить объект. Вы можете рассмотреть возможность использования автоматического подсчета ссылок, чтобы правильно настроить аспект управления памятью.

1 голос
/ 29 марта 2012

Да, вам нужно выпустить IBOutlet, , если вы сохранили его.

Однако IBOutlets принадлежат их nib-файлам, поэтому обычной практикой является использование assign или weak @property вместо retain или strong. В этом случае вам не нужно выпускать его.

0 голосов
/ 29 марта 2012

Если вы используете xcode 4+, то при создании розетки он сам делает релиз для того же самого в dealloc и viewDidUnload, поэтому нет необходимости делать это снова.

...