инициализировать переменные экземпляра на Objective-C - PullRequest
2 голосов
/ 02 марта 2011

Я занимаюсь разработкой приложения для iPhone 3.1.3, и у меня есть следующий заголовочный файл:

#import <UIKit/UIKit.h>

@interface VoiceTest01ViewController : UIViewController {
    IBOutlet UITextView *volumeTextView;
    BOOL isListening;
    NSTimer *soundTimer;
}

@property (nonatomic, retain) IBOutlet UITextView *volumeTextView;
@property (nonatomic, retain) NSTimer *soundTimer;

- (IBAction)btnStartClicked:(id)sender;

@end

И .m файл:

#import "VoiceTest01ViewController.h"

@implementation VoiceTest01ViewController

@synthesize volumeTextView;
@synthesize soundTimer;

...

Как установить isListening до false при запуске?

Ответы [ 4 ]

6 голосов
/ 02 марта 2011

Все переменные экземпляра по умолчанию установлены в 0 / NULL / nil, что в случае BOOL означает NO.Таким образом, он уже равен NO (или false) по умолчанию.

Если вам нужно любое другое значение, вам нужно переопределить назначенный инициализатор (ы), в большинстве случаев init, и установить значение по умолчаниюзначение там.

3 голосов
/ 02 марта 2011

Установите логическое значение в viewDidLoad

- (void)viewDidLoad {
  isListening = NO;
  //Something
}
2 голосов
/ 02 марта 2011

Значением по умолчанию для поля BOOL является False, но это хорошее место, чтобы установить его в «viewDidLoad» так же, как @BuildSucceeded sugest

Привет

0 голосов
/ 22 ноября 2015

1) init - хорошее место, как показано ниже, но если вы используете раскадровку, этот метод init не будет вызван.

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

2) initWithCoder - этоХорошее место для вашего кода, если вы используете раскадровку, конечно, ваш SDK 3.0, я думаю, что в то время у него не было раскадровки, но на всякий случай, если это кому-нибудь нужно:

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

3) Если ваш viewcontroller будетбыть инициатором из nib-файла:

- (id) initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
         isListening = NO;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...