“sending 'const NSString *' to parameter of type 'NSString *' discards qualifiers” warning
我有常量nsstring,我想称之为:
1 | [newString isEqualToString:CONSTANT_STRING]; |
这里有错误的代码吗?
我得到警告:
sending 'const NSString *' to parameter of type 'NSString *' discards qualifiers
这些应该如何申报?
您应该声明常量字符串如下:
1 | NSString * const kSomeConstantString = @""; // constant pointer |
而不是:
1 2 3 | const NSString * kSomeConstantString = @""; // pointer to constant // equivalent to NSString const * kSomeConstantString = @""; |
前者是指向
使用
方法
此外,
只需将stackoverflow上各种文章中的所有内容放到一个适合我的位置,define就不好了,因为您无法从变量类型中获益,基本上编译器在编译时会替换所有出现的内容(import constants.h,无论何时需要):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // Constants.h #import <Foundation/Foundation.h> @interface Constants : NSObject extern NSString *APP_STATE_LOGGED_IN; extern NSString *APP_STATE_LOGGED_OUT; @end // Constants.m #import <Foundation/Foundation.h> #import"Constants.h" @implementation Constants NSString *APP_STATE_LOGGED_IN = @"APP_STATE_LOGGED_IN"; NSString *APP_STATE_LOGGED_OUT = @"APP_STATE_LOGGED_OUT"; @end |
抽出几分钟来读这个。指针上的goodread表示常量上的hell,反之亦然。
http://c-faq.com/decl/spiral.anderson.html网址: