Can*_*ito 18 constants global-variables objective-c extern
我已经看到了两种创建全局变量的方法,有什么区别,你什么时候使用它们?
//.h
extern NSString * const MyConstant;
//.m
NSString * const MyConstant = @"MyConstant";
Run Code Online (Sandbox Code Playgroud)
和
//.h
extern NSString *MyConstant;
//.m
NSString *MyConstant = @"MyConstant";
Run Code Online (Sandbox Code Playgroud)
jus*_*tin 34
前者是常量的理想选择,因为它指向的字符串无法更改:
//.h
extern NSString * const MyConstant;
//.m
NSString * const MyConstant = @"MyConstant";
...
MyConstant = @"Bad Stuff"; // << YAY! compiler error
and
//.h
extern NSString *MyConstant;
//.m
NSString *MyConstant = @"MyConstant";
...
MyConstant = @"Bad Stuff"; // << NO compiler error =\
Run Code Online (Sandbox Code Playgroud)
简而言之,默认情况下使用const(前者).编译器会告诉您是否尝试更改它 - 然后您可以代表您确定它是否是错误,或者它指向的对象是否可能发生变化.它是一个很好的保护措施,可以节省大量的bug/headscratching.
另一个变化是一个值:
extern int MyInteger; // << value may be changed anytime
extern const int MyInteger; // << a proper constant
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11202 次 |
最近记录: |