在Objective-C上初始化实例变量

时间:2011-03-02 14:13:48

标签: objective-c iphone-sdk-3.0

我正在开发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 个答案:

答案 0 :(得分:6)

默认情况下,所有实例变量都设置为0 / NULL / nil,如果BOOL,则表示NO。所以它默认为NO(或假)。

如果您需要任何其他值,则需要覆盖指定的初始值设定项,大部分时间为init,并在那里设置默认值。

答案 1 :(得分:3)

在viewDidLoad

中设置布尔值
- (void)viewDidLoad {
  isListening = NO;
  //Something
}

答案 2 :(得分:2)

BOOL字段的默认值为False,但它是一个好位置,将其设置在“viewDidLoad”中,就像@BuildSucceeded sugest

一样

问候

答案 3 :(得分:0)

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;
    }
}