Objective-C中如何在.h文件声明NSString?报错问题排查
解决Objective-C头文件中NSString声明的错误问题
看起来你遇到的错误主要是编译器无法识别NSString类型,再加上一些语法规范的小问题,我来帮你一步步排查解决:
问题根源分析
你的头文件没有告诉编译器NSString是什么类型——虽然你的类继承自NSObject,但如果没有导入对应的框架或者做前向声明,编译器会把NSString当成未知类型,从而抛出Expected member name or ';' after declaration的错误。另外,你用的retain是MRC(手动引用计数)时代的写法,现在主流的ARC(自动引用计数)环境下更推荐用strong。
修复步骤
导入Foundation框架
在头文件最顶部添加这行代码,让编译器能识别所有Foundation框架里的类(包括NSString和NSObject):#import <Foundation/Foundation.h>如果想减少头文件依赖,也可以用前向声明替代导入:
@class NSString;修正NSString属性的内存语义
把retain换成ARC环境下的strong(如果你的项目还在使用MRC,retain是没问题的,但现在绝大多数项目都是ARC):@property (nonatomic, strong) NSString *DATABASE_NAME;可选:优化BOOL属性命名(符合Objective-C规范)
虽然这不是错误原因,但Objective-C中BOOL类型的属性通常会以is开头,比如把MAP_SATELLITE_VIEW改成isMapSatelliteView,调用时会更符合语言习惯(比如[sharedInstance isMapSatelliteView])。
修复后的完整头文件
#import <Foundation/Foundation.h> @interface GlobalVariables : NSObject @property BOOL isMapSatelliteView; @property (nonatomic, strong) NSString *DATABASE_NAME; + (GlobalVariables*)sharedInstance; @end
这样修改后,编译器就能正确识别NSString类型,错误应该就消失了。
内容的提问来源于stack exchange,提问作者Student
相关产品推荐
相关产品推荐

