Iphone 在视图控制器内初始化NSString成员变量
我在视图控制器的头文件中声明了NSString成员变量:Iphone 在视图控制器内初始化NSString成员变量,iphone,Iphone,我在视图控制器的头文件中声明了NSString成员变量: @interface MyApprViewController : UIViewController { NSString *var; ... } @property (retain) NSString *var; ... -(IBAction)buttonPressed: (id)sender; 在实现中,我使用了@synthesis var,并尝试在buttonPressed方法的实现中使用该var,但它不
@interface MyApprViewController : UIViewController {
NSString *var;
...
}
@property (retain) NSString *var;
...
-(IBAction)buttonPressed: (id)sender;
在实现中,我使用了@synthesis var
,并尝试在buttonPressed方法的实现中使用该var,但它不能正常工作,我认为这是因为var从未初始化过。在哪里可以初始化此变量?我不想做它里面的方法;我当然想做一次,因为我会一直在它后面添加文本:
-(IBAction)buttonPressed: (id)sender {
NSString *input = ((UIButton *)sender).currentTitle;
var = [var stringByAppendingString:input];
textField.text = var;
}
[input release];
}
我尝试在视图控制器类内重写init方法,但它从未被调用(可能是因为没有显式初始化视图控制器类?),因此,我应该在哪里初始化var
,以便在视图控制器类内使用它(在buttonPressed方法内)
谢谢,
Mihai最好的位置是在您的
viewDidLoad
或您使用的任何init
方法中。如果两者都没有,只需向UIViewController添加一个方法-(void)viewDidLoad
。有几个地方需要初始化:
- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle
- (void)awakeFromNib
这是指定的初始值设定项。您说过您重载了“init”,它不是UIViewController的指定初始值设定项
- (void)awakeFromNib
如果视图控制器本身位于父NIB内部,则在父NIB完全加载且父NIB的出口全部连接完毕后,将调用此方法
- (void)viewDidLoad
如果您的视图控制器有一个NIB,则在加载其NIB时调用它
- (void)loadView
如果您的视图控制器没有NIB,则在第一次请求其视图时会调用它。当然,这不会起作用,stringByAppendingString是一种实例方法,并且永远不会分配var。如果您有一个nib文件(如本例appera所示),那么最好的初始化方法是在viewDidLoad上,但在初始化之前检查是否为allready nil,以避免每次调用此方法时都分配一个新对象。最后记住发布谢谢。我使用了viewDidLoad,它按预期工作。@user652716-请不要签名;利用你的时间;看见