2

“局部对象变量”是在方法中使用或初始化的变量,还是传入的参数?我在 Xcode 的文档或 Google 中找不到这个术语。

我在我正在使用的 Objective-C 书中找到了这一点。完整的报价是

作为基本 C 数据类型的局部变量没有默认初始值,因此您必须在使用它们之前将它们设置为某个值。reduce 方法中的三个局部变量在使用之前都设置了值,所以这里没有问题。局部对象变量默认初始化为nil。与您的实例变量(通过方法调用保留其值)不同,这些局部变量没有内存。因此,在方法返回后,这些变量的值就消失了。每次调用方法时,该方法中定义的每个局部变量都会重新初始化为使用变量声明指定的值(如果有)。”

4

2 回答 2

1

根据您的评论,我明白这本书的意思。局部变量是特定范围的局部变量(在 C 和 Objective-C 中用大括号“{}”表示)。局部变量是在使用它们的范围内声明的,而不是全局变量,全局变量可以在全局范围内看到和使用(对于一个文件、多个文件或整个程序,取决于声明的可见性)。实例变量是类实例的一部分,可以被它的任何方法使用(如果使用@public 声明,其他类也可以使用,尽管这通常不是好的做法)。

原始局部变量是类型为 C 原始类型(如 int、float、char 等)的局部变量。本书所称的“局部对象变量”只是类型为(指向)Objective-C 对象的局部变量。例子NSString *NSDictionary *id

局部变量存储在堆栈上,而不是堆上。堆栈上的变量在声明它们的方法或函数调用结束时消失。这个堆栈溢出问题有一些很好的答案来解释堆栈和堆之间的区别:堆栈和堆是什么以及在哪里?

Google 搜索“局部变量objective-c”的第一个结果:http: //blog.ablepear.com/2010/04/objective-c-tuesdays-local-variables.html

于 2012-04-06T15:35:54.573 回答
0

局部变量是在方法中定义的,变量的作用域已经存在于方法本身中。

于 2020-02-20T14:09:39.103 回答