我忘记初始化一个局部变量,使用它时没有收到任何警告。由于我使用的是 ,所以ARC
变量被初始化为nil
,所以没有造成任何伤害,但是当我使用未初始化的值时,我仍然想要一个警告。如果我禁用ARC
,我会收到我期望的警告。
NSString *foo;
NSString *baz;
if (bar) {
foo = @"fizz";
} else {
foo = @"buzz";
}
NSLog(@"foo: %@", foo); // foo: (fizz|buzz)
NSLog(@"baz: %@", baz); // baz: (null)
没有 ARC:
/blah/blah/blah/Blah.m:14:18: note: initialize the variable 'foo' to silence this warning
NSString *foo;
^
- 编辑 -
我已经想出了如何使用 local blocks 使未初始化的值变得不可能。这消除了对警告的需要。