这个问题困扰了我一晚上,没有任何意义。这个函数返回它应该返回的任何东西。例如,问题名称。
-(id)initWithIssue:(NSString *)string {
self = [super initWithNibName:nil bundle:nil];
if (self) {
NSString *thing = string;
issueName = [[NSString alloc]initWithString:thing];
NSLog(@"The issue name = %@", issueName);
}
return self;
}
但是,如果我尝试在 viewDidLoad 中访问“issueName”:什么都没有,无论我做什么,它都等于 null。我尝试过清理、设置自定义设置器、在属性或 Ivar 之间切换……等等。令人气愤的是,这个字符串在程序的这个点上就消失了。
这到底是怎么回事,这太让人生气了。
编辑
这是相关的整个代码。以及我是如何开始的。
.h 文件:
@interface BFPaidAreaViewController : UITabBarController <BFNewsTableViewControllerDelegate> {
NSString *issueName;
}
-(id)initWithIssue:(NSString *)string;
点 m 文件:
-(id)initWithIssue:(NSString *)string {
self = [super init];
if (self) {
// PLPiper I had it that way before, because I was fiddling out of frustration
issueName = [[NSString alloc] initWithString:string];
NSLog(@"This is Called, the issue name is equal to = %@", issueName);
}
return self;
}
-(void)viewDidLoad {
[super viewDidLoad];
NSLog(@"The issue = %@", issueName);
}
我这样调用视图控制器:
BFPaidAreaViewController *pavc = [[BFPaidAreaViewController alloc]initWithIssue:@"test"];
这将记录:
This is Called, the issue name is equal to = test
The issue = (null)
新编辑
发现了问题。它是一个 UITableViewController。奇怪,当我将它的类更改为 UIViewController 时,它可以工作。这是一个错误还是只是正常行为?但更紧迫的是,我如何绕过这个限制?
(只是为了解释我在 UI 方面所做的事情,UITabBarController 位于模态视图中。这适用于 UIViewController。)
上帝可怕的修复
-(id)initWithIssue:(NSString *)string {
self = [super initWithNibName:nil bundle:nil];
if (self) {
NSString *thing = string;
issueName = [[NSString alloc]initWithString:thing];
NSLog(@"The issue name = %@", issueName);
}
[self viewDidLoad];
return self;
}
让我觉得很脏。但它现在必须做,我可以继续。如果有人能想到解决方案,请告诉。对不起我的好斗,听到人们说‘这到底是什么?什么是问题名称??伊瓦尔??当它真的隐含在问题中时。