这是在 swift :let someString:String = "blah"
在Objective-C中等效于:NSString * const someString = @"blah";
我一直假设在 Objective-C 中以这种方式使用 const 关键字已经使其实际上等效于 Swift 中的 let ,在幕后,但很高兴听到这一点得到证实。在 Objective-C 中定义局部变量时很少有人以这种方式使用 const,但它似乎等同于 let。考虑到 let 的好处,确保以后不会发生指针的变化,我想知道我现有的 Objective-C 项目是否不会一直使用这个约定受益。我的问题不是关于 Swift String 和 NSString 之间的区别。
最佳答案
提供 您将 const
放在类型之后,如下所示:
NSString * const someString = @"blah"; // your example
struct { int x; int y; } const someStruct = { 42, 24 }; // const value type
那么 (Objective-)C 中
const
的语义和 Swift 中 let
的语义是相似的。对于值类型,两者都防止修改值。对于引用类型,既防止修改引用本身又允许修改引用对象。如果您将
const
放在声明中的其他位置,那么您将进入 C 指向常量的指针、常量指针、指向常量的常量指针和更长的(非)常量组合链的迷宫。并不是每个进入这个迷宫的人都会回来……或者至少不会在他们的理智完好无损的情况下回来。你被警告了! ;-)关于objective-c - swift let 等价于objective-c const 吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45067553/