Как инициализировать переменные и свойства экземпляра в ViewController - PullRequest
1 голос
/ 05 марта 2012

Что такое синтаксис для инициализации переменных экземпляра и свойств в ViewController? это код реализации

CalcViewController.m

#import "CalcViewController.h"

@interface CalcViewController ()
{
 int initialValue;
}

@property(nonatomic,weak) BOOl isFirstEntry;

@end


@implementation CalcViewController
@synthesize isFirstEntry = _isFirstEntry;
.......
.......
.......
.......
@end

-(id) init
{
self = [super init];
     if(self)
      {
      ............;
      }
return self;
}

это не срабатывает.

Ответы [ 3 ]

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

Если вы не хотите делать это во время загрузки метода, то реализуйте назначенный инициализатор и инициализируйте его там. Если вы не переопределите указанный инициализатор, вы наследуете его от своего суперкласса и инициализируете в назначенном инициализаторе суперкласса. UIViewController назначенный инициализатор:

- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle

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

Метод init будет вызываться при создании объекта с использованием

CalcViewController *calcView = [CalcViewController alloc] init]; or [CalcViewController new];

Если вы создаете объект с использованием какого-либо другого метода инициации, он не будет вызываться.В двух словах, вы должны помнить, что init - это то же самое, что и любой другой метод.

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

Полагаю, ваш ViewController загружен из пера. (Шаблон проекта XCode) попробуйте одно из следующих действий:

- (id)initWithCoder:(NSCoder)aDecoder {
    self = [super initWithCoder:aDecoder];
    if(self) {
        ...
    }
    return self;
}

Но учтите, что при вызове этого метода все соединения из Interface Builder ненастроить (родитель, дети, действия, ...).Если вы хотите полагаться на IB-соединения, вы можете использовать этот метод:

- (void)awakeFromNib{
    ...
}

Обратите внимание, что оба метода будут вызываться только при загрузке самого ViewController из NIB, а не только его представления.Обычно это происходит потому, что XCode предоставляет вам MainWindow.xib, который содержит контроллер представления внутри (-> NIB).

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