ブロックステートメント内でラベルのアルファを設定しようとしているため、self を呼び出しています。私が理解しているように、ブロックステートメント内から直接自分自身を呼び出すことはできないため、最初に自分自身を参照する必要があります。
これは私が持っているコードですが、機能していません:
self.accountStore = [[ACAccountStore alloc] init];
__weak UILabel *weakSelf = self.errorLabel;
[self.accountStore requestAccessToAccountsWithType:twitterType options:NULL completion:^(BOOL granted, NSError *error) {
if (!granted) {
[weakSelf setAlpha:0.0f];
}
}];
何が問題なのかについてのアイデアはありますか?
更新 1
私も自分自身だけを参照しようとしましたが、うまくいきませんでした:
self.accountStore = [[ACAccountStore alloc] init];
__weak FrontPageViewController *weakSelf = self;
[self.accountStore requestAccessToAccountsWithType:twitterType options:NULL completion:^(BOOL granted, NSError *error) {
if (!granted) {
[weakSelf.errorLabel setAlpha:0.0f];
}
}];
更新 2
エラーラベルがnilであるかどうかを確認したところ、そうではないようです:
if (self.errorLabel != nil) {
NSLog(@"Errorlabel is not nil"); //Errorlabel is not nil
}
エラーの原因
エラーは、ラベルをフェードアウトしたかった直後にこのコードがあったことです。
[UIView animateWithDuration:0.2f animations:^{
//self.errorLabel.alpha = 0.0f;
} completion:^(BOOL success){
}];
なぜこれが問題を引き起こすのか完全には理解できませんか?