2012-12-25 58 views
1

我創建了一個屬性的UILabel是沒有得到初始化

@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」標籤變爲可見。有人可以解釋爲什麼兩種語法之間存在行爲差異? 謝謝 Vishal

回答

0

我認爲這是因爲你的財產設置爲weak。您可以將其更改爲strong(首選),或者在初始化周圍添加一個retain塊(不確定這是否可行,而不是在計算機上測試)。

如果您使用的是ARC,那麼初始化將不會被保留,因爲沒有任何東西擁有該實例。

有關詳細信息,請參見:https://stackoverflow.com/a/11013715/785791

+0

感謝很多來闡明。 –