我想在prefix.pch中为chatboost编写代码 目前我已经创建了一个全局文件名,我提到了所有应用程序ID和签名
目前我的.pch文件看起来像这样
#import <Availability.h>
#ifndef __IPHONE_5_0
#warning "This project uses features only available in iOS SDK 5.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import "Global.h"
#import "Chartboost.h"
#endif
但我不知道如何在prefix.pch中编写代码
我的global.h文件看起来像这样
#import <Foundation/Foundation.h>
@interface Global : NSObject
#define APP_ID @"dfgdf";
#define APP_SIGNATURE @"fdgfd";
@end
答案 0 :(得分:2)
预编译的头文件用于一个目的:使编译更快。它被编译并存储在缓存中,并在编译期间自动包含在每个源文件中。就像每个源文件一样,
#import "Prefix.h"
这对于项目范围的#defines来说非常方便。 (仅供参考,#define是一种代码味道)
Xcode引号:如果前缀标题或其包含的任何文件的内容很少更改,则预编译前缀标头将最有效。如果前缀标题的内容或其包含的任何文件经常更改,则可能会对整体构建时间产生负面影响。
更明确的解释是here
在.pch中#import的源文件头时请记住这一点。我建议你探索编写代码的其他方法,而不是选择.pch文件。
您可以将Prefix.h用于常量和实用程序源文件的#import。同样为了方便调试:
#ifndef DEBUG
#define NSLog(x,...)
#endif
我看到你要声明常量字符串以在项目范围内使用。创建一个新的头文件“Constants.h”(或“Global.h”,你喜欢它)并在这里写下你所有的全局常量(通常是宏和&amp; typedef枚举)。但是,要使用extern声明常量字符串,您也需要实现文件。
在“Constants.h”中,
extern NSString *const app_ID;
在“Constants.m”中,
NSString *const app_ID=@"dfgdf";
希望有所帮助。
答案 1 :(得分:0)
您可以使用#define
编写代码#import <Availability.h>
#ifndef __IPHONE_5_0
#warning "This project uses features only available in iOS SDK 5.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import "Global.h"
#import "Chartboost.h"
#endif
#define SHOW_CHARTBOOST [[Chartboost sharedChartboost] showInterstitial];
并使用SHOW_CHARTBOOST
这不是一个好习惯,你应该使用全局/常量类来编写这样的东西,并且主要用于某些常量,而不是那里的长方法。
答案 2 :(得分:0)
我建议您直接将宏写入.pch文件。无需为定义宏创建单独的类。写如下。
#import <Availability.h>
#ifndef __IPHONE_5_0
#warning "This project uses features only available in iOS SDK 5.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import "Chartboost.h"
#endif
#define APP_ID @"dfgdf";
#define APP_SIGNATURE @"fdgfd";
OR
如果您希望将您的id和签名作为类的成员,那么创建一个单例类。将其定义为头文件中的属性,作为readonly属性,并在sharedObject方法中定义值。 写如下
Global.h
#import <Foundation/Foundation.h>
@interface Global : NSObject
@property(nonatomic, strong, readonly) NSString *appId;
@property(nonatomic, strong, readonly) NSString *appSignature;
+(instancetype)sharedInstance;
@end
Global.m
#import "Global.h"
@interface Global ()
@property(nonatomic, strong) NSString *appId;
@property(nonatomic, strong) NSString *appSignature;
@end
@implementation Global
+(instancetype)sharedInstance
{
static Global *sharedInstance;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [Global new];
sharedInstance.appId = @"dfgdf";
sharedInstance.appSignature = @"fdgfd";
});
return sharedInstance;
}
@end
OR
如果要在没有类的情况下访问该值,请按如下所示创建类并将其导入.pch文件。
global.h
#import <Foundation/Foundation.h>
@interface Global : NSObject
extern NSString *const appId;
extern NSString *const appSignature;
@end
global.m
#import "Global.h"
@implementation Global
NSString *const appId = @"dfgdf";
NSString *const appSignature = @"fdgfd";
@end
我建议使用第一种方法。
答案 3 :(得分:-1)
对应用程序级变量使用extern key work,如下所示
在.h档案中 extern NSString * yourVariable;
在.m文件中 NSString * yourVariable = @&#34;&#34 ;;
您可以在任何使用变量名称的地方访问此变量,只需输入此.h文件。