我是App Development的新手,正在开发我的第一个真正的应用程序。 我以为我理解了头文件中的属性变量,但我真的不知道这里发生了什么......我有一个解决方案,但不明白为什么会有效。
我从另一个ViewController传递了一个String,并在我的属性Variable:
中写了它ViewController.h:
@property(weak, nonatomic) NSString *Gender;
现在我的viewDidLoad( ViewController.m )启动:
- (void)viewDidLoad{ [super viewDidLoad];
self.TestLabel.text = _Gender; ...}
一切都很好,Label显示我的字符串。 但当我按下我的按钮“重置”(仍然是ViewController.m)时:
- (IBAction)ButtonReset:(id)sender { [self viewDidLoad] }
一切都像以前一样工作但我的标签是空的,它就像字符串不存在一样。
解决方案我想出了一些尝试:
在我的ViewController.m中添加一个全局变量
NSString *boygirl;
然后将原始代码更改为:
- (void)viewDidLoad{ [super viewDidLoad];
boygirl = _Gender;
self.TestLabel.text = boygirl; ...}
... 为什么这样做?有更优雅的方式吗? 如果在我的原始代码中无法调用性别...为什么boygirl可以再次获得性别?
非常感谢!
答案 0 :(得分:3)
您的属性被声明为“弱”,这意味着只要没有其他对该字符串的引用,您的属性就会设置为nil。听起来你的意思是“强大”。
此外,您不应该自己调用viewDidLoad,并且您的属性名称应该以小写字母开头。这些不是你问题的根源,但我认为很早就要学习好东西。