将变量初始化为 nil
是好习惯吗?
我问这个是因为当我在我的项目上运行分析器时,我收到了警告。
NSString *q;
if(sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, nil) == SQLITE_OK)
{
sqlite3_step(statement);
selectedQuestion =[NSString stringWithFormat: @"%s",(char *)sqlite3_column_text(statement, 0)];
sqlite3_finalize(statement);
}
sqlite3_close(database);
return q; //Undefined or garbage value returned to caller
当我更改代码时,警告消失了:
NSString *q = nil;
最佳答案
如果您使用的是 ARC,那么您的指针将自动分配给 nil。但是,我不相信您使用的是 ARC,在这种情况下,指针将具有垃圾值。这是危险的,因为调用该函数的任何人都可以收到结果并相信指针指向有效的东西,因为它不等于 nil。
所以...是的,始终将您的指针初始化为 nil 或有效值。
示例 1::不需要首先分配给 nil 的好示例:
UIViewController *myVC = [[[UIViewController] alloc] init] autorelease];
示例 2::不需要首先分配给 nil 的错误示例:
UIViewController *myVC = nil; // dumb since next line assigns it to valid value
myVC = [[[UIViewController] alloc] init] autorelease];
示例 3::分配给 nil 的好示例,因为它将有条件地获取新值
UIViewController *myVC = nil; // :D
if (someCondition)
{
myVC = [[[UIViewController] alloc] init] autorelease];
}
...
关于objective-c - 将变量初始化为 nil 是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9215646/