开发时候,为了调试bug或者查看正式服数据,经常在内网和外网之间,为了方便测试,添加一个按钮,一键切换内外网,如图所示.
由于比较简单,直接上代码
MFChangeServer.h
@interface MFChangeServer : NSObject
+ (void)change;// 切换内外网,自由debug 模式有效
+ (NSString *)commonUrl;// 切换内外网,自由debug 模式有效
+ (NSString *)baseUrl;// 切换内外网,自由debug 模式有效
+ (NSString *)shareUrl;// 切换内外网,自由debug 模式有效
@end
MFChangeServer.m
#import "MFChangeServer.h"
static int index_MF_NODup = 0;
@implementation MFChangeServer
+ (void)change{
index_MF_NODup++;
index_MF_NODup = index_MF_NODup%2;
}
+ (NSString *)baseUrl{
static NSArray *array = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
array = @[@"https://正式服地址",
@"https://测试服地址"
];
});
return array[index_MF_NODup];
}
+ (NSString *)commonUrl{
static NSArray *array = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
array = @[@"https://正式服地址",
@"https://测试服地址"
];
});
return array[index_MF_NODup];
}
+ (NSString *)shareUrl{
static NSArray *array = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
array = @[@"https://正式服地址",
@"https://测试服地址"
];
});
return array[index_MF_NODup];
}
@end
用法
在定义根路径的地方
#define kCommonUrl [MFChangeServer commonUrl]
#define kBaseUrl [MFChangeServer baseUrl]
#define kShareBaseUrl [MFChangeServer shareUrl]
在.pch文件添加头文件
#ifdef __OBJC__
#import "MFChangeServer.h"
#endif
需要注意的是此处不能用懒加载
设置界面右上角添加按钮
#ifdef DEBUG
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"切换" style:UIBarButtonItemStylePlain target:self action:@selector(changeServer)];
#endif
- (void)changeServer{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"切换服务器" message:nil delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
alert.delegate = self;
[alert show];
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex != alertView.cancelButtonIndex) {
[MFChangeServer change];
}
}
copyright by 我的同事-伟