我创建了一个属性
@property (weak,nonatomic) UILabel *vishalSays;
然后我尝试初始化属性,如下所示:
- (void)viewDidLoad
{
[super viewDidLoad];
self.vishalSays = [[UILabel alloc] initWithFrame:CGRectMake(30, 100, 200, 44)];
[self.vishalSays setText:@"Hello World"];
[self.view addSubview:self.vishalSays];
}
但是上面的代码没有在iPhone模拟器中显示标签。将代码更改为以下内容时:
- (void)viewDidLoad
{
[super viewDidLoad];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(30, 100, 200, 44)];
self.vishalSays = label;
[self.vishalSays setText:@"Hello World"];
[self.view addSubview:self.vishalSays];
}
然后“Hello World”标签变得可见。有人可以解释为什么两种语法之间存在行为差异? 谢谢 维沙尔
答案 0 :(得分:0)
我认为这是因为您的属性设置为weak
。您可以将其更改为strong
(首选),或在初始化周围添加retain
块(不确定这是否有效,而不是在计算机上进行测试)。
如果您正在使用ARC,则不会保留初始化,因为没有任何人拥有该实例。