1

我创建了一个属性

 @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”标签变得可见。有人可以解释为什么这两种语法之间存在行为差异吗?谢谢维沙尔

4

1 回答 1

0

我认为这是因为您的属性设置为weak. 您可以将其更改为strong(首选),或retain在初始化周围添加一个块(不确定这是否可行,而不是在计算机上进行测试)。

如果您使用的是 ARC,则不会保留初始化,因为没有任何人拥有该实例。

有关更多信息,请参阅:https ://stackoverflow.com/a/11013715/785791

于 2012-12-25T01:17:01.070 回答