今日からObjective-Cブロックを使い始めました。私は次のコードを書きました:
NSArray *array = @[@25, @"abc", @7.2];
void (^print)(NSUInteger index) = ^(NSUInteger index)
{
NSLog(@"%@", array[index]);
};
for (int n = 0; n < 3; n++)
print(n);
これは正しく機能します。ただし、宣言後に変数を変更する必要があったarray
ため、次のコードを使用してみました。
NSArray *array;
void (^print)(NSUInteger index) = ^(NSUInteger index)
{
NSLog(@"%@", array[index]);
};
array = @[@25, @"abc", @7.2];
for (int n = 0; n < 3; n++)
print(n);
ただし、それは機能しません。コンソールは(null)
3回だけ印刷します。私の最初のコードでは機能したのに、なぜこれが機能しないのですか?