在ViewController中初始化实例变量和属性的语法是什么? 这是实现的代码
#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;
}
这不会被触发。
答案 0 :(得分:3)
如果您不想在加载方法期间执行此操作,请实现指定的初始值设定项并在其中初始化。如果你没有重新定义指定的初始化程序,那么你从超类继承它,你将在超类的指定初始化程序中初始化。 UIViewController
指定的初始化程序为:
- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle
答案 1 :(得分:1)
使用
创建对象时将调用init方法CalcViewController *calcView = [CalcViewController alloc] init]; or [CalcViewController new];
如果使用其他启动方法创建对象,则不会调用它。简而言之,你必须记住init就像任何其他方法一样。
答案 2 :(得分:0)
我猜你的ViewController是从nib加载的..(Xcode项目模板) 尝试以下之一:
- (id)initWithCoder:(NSCoder)aDecoder {
self = [super initWithCoder:aDecoder];
if(self) {
...
}
return self;
}
但请注意,调用此方法时,未设置Interface Builder的所有连接(父级,子级,操作,...)。如果您想依赖IB连接,可以使用此方法:
- (void)awakeFromNib{
...
}
请注意,只有从NIB加载ViewController本身时才会调用这两种方法,而不仅仅是视图。这通常是因为XCode为您提供了一个MainWindow.xib,其中包含一个视图控制器( - > NIB)。