gpt4 book ai didi

objective-c - 不进入我的构造函数

转载 作者:行者123 更新时间:2023-12-01 18:30:03 24 4
gpt4 key购买 nike

我在 xcode 4.3 中使用选项卡式 View 应用程序。

我只是想初始化我在我的 FirstViewController 的 .h 文件中声明的一些变量。我通过在我的 .m 文件中创建一个构造函数来尝试这样做。

.h 文件:

#import <UIKit/UIKit.h>

@interface FirstViewController : UIViewController {

IBOutlet UITextField *currentGuess;
IBOutlet UILabel *attemptsMade;
IBOutlet UILabel *attemptsLeft;
IBOutlet UITextView *hints;
int numberToGuess;
int numberOfGuessesMade;
int maxGuesses;
int maxGenNumber;

NSMutableArray *allGuesses;


}

- (id) init;

@end

.m 文件
#import "FirstViewController.h"

@interface FirstViewController ()

@end

@implementation FirstViewController

- (id) init {
NSLog(@"entered constructor!");

if(self = [super init])
{
numberToGuess = 0;
numberOfGuessesMade = 0;
maxGuesses = 3;
maxGenNumber = 10;
}

return self;
}

最佳答案

使用 init 方法初始化 UIViewController 没有意义。
通常你需要- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle
如果您从 XIB 文件构建它,那么就这样做

您需要将初始化代码放入 - (void)awakeFromNib-(void)viewDidLoad .

像这样适合你的情况

@implementation FirstViewController

- (id) awakeFromNib {
NSLog(@"entered XIB constructor!");

numberToGuess = 0;
numberOfGuessesMade = 0;
maxGuesses = 3;
maxGenNumber = 10;

}

如果非 xib 则:
- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle {
NSLog(@"entered constructor!");

if(self = [super initWithNibName:nibName bundle:nibBundle])
{
numberToGuess = 0;
numberOfGuessesMade = 0;
maxGuesses = 3;
maxGenNumber = 10;
}

return self;
}

记住。 init 不是您在 OO 类(class)中学习的“真正”构造函数。

关于objective-c - 不进入我的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10084418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com