![]() |
1
1
对于nsstring alloc部分,init: 我认为,首先,它可以被认为是一种便利,但它与[[nsstring alloc]init]不同。 我在这里找到了一个有用的链接。你可以看看那个 NSString and shortcuts 对于静态和定义部分: 类中的静态实例意味着您可以使用类的任何实例进行访问。您可以更改static的值。对于函数,这意味着变量的值在函数调用之间保留 #define是放置一个宏常量以避免使用幻数和字符串,并定义函数宏。#定义最大值100。然后您可以使用int a[max_mumber]。编译代码时,它将被复制并粘贴到int a[100] |
![]() |
2
9
我认为这个问题有两个不相关的部分。
一个是它为什么不被分配和初始化,答案是当你写一个
另一个问题是
一
|
![]() |
3
4
只是偶然发现了同样的
根据 K&R C中的每个变量都有两个基本属性: 类型 (例如浮球)和 存储类 (自动、寄存器、静态、外部、typedef)。 这个 静止的 存储类有两种不同的效果,具体取决于它是否被使用:
变量 街区内 它没有声明它的存储类,默认情况下被认为是自动的(即它是本地的)。一旦该块退出,它将被删除。当您将自动变量声明为静态变量时,它将在退出时保留其值。当代码块再次被调用时,该值仍然存在。 全局变量(与函数在同一级别声明)始终是静态的。将全局变量(或函数)显式声明为 静止的 将其范围仅限于单个源代码文件。它将无法从访问,也不会与其他源文件冲突。这叫做 内部联动装置 . 如果你想了解更多,请继续阅读 internal and external linkage in C . |
![]() |
4
2
你看不到呼叫
在这种情况下,
|
![]() |
5
1
这是nsstring的一个特殊情况in it case,它只将nsstring指针指向在启动时分配并初始化的实例(我不确定,可能是延迟的)。对于您在程序中使用的每个唯一@“”,都有一个以这种方式创建的nsstring实例。 我也认为这是真的,即使你不使用静态关键字。此外,我认为用该字符串初始化的所有其他nsstring都将指向同一个实例(这不是问题,因为它们是不可变的)。
它与define不同,因为通过使用=@“whatever”初始化创建字符串,实际上有一个nsstring变量。它似乎更等同于C's
|