我想做的就是为我的(流捕获)应用程序创建一个实用程序类,该应用程序从我的网站获取设置。我想从其他文件中调用它作为一个简单的[RemoteConfig updateSettings];
我的目标是使用此远程配置实用程序,而无需为我获取远程设置的每种情况创建对象。
Objective C 中关于静态/类变量和方法的信息是模糊的,非常固执己见,所以经过大量的试验,我得到了这个工作。但它看起来很有趣,这让我觉得有些事情是不正确的。
RemoteConfig.h只是声明了+(void) updateSettings方法。
这是我的RemoteConfig.m:
#import "RemoteConfig.h"
static NSMutableData* _configData;
static NSString* url = @"http://local.namehidden.com:90/json.html";
static int try;
@implementation RemoteConfig
+(void) updateSettings
{
NSString *identifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
//Create URL request
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]
cachePolicy: NSURLRequestReloadIgnoringCacheData
timeoutInterval: 10];
[request setHTTPMethod: @"POST"];
NSString *post = [NSString stringWithFormat:@"id=%@", identifier];
NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody:postData];
NSURLConnection* connection = [NSURLConnection connectionWithRequest:request
delegate:self];
[connection start];
}
///////////////////////////// DELEGATE METHODS ///////////////////////////////////
+(void)connection:(NSConnection*)conn didReceiveResponse:(NSURLResponse*)response
{
if (_configData == NULL) {
_configData = [[NSMutableData alloc] init];
}
[_configData setLength:0];
NSLog(@"didReceiveResponse: responseData length:(%d)", _configData.length);
}
/// and so on...
它看起来很时髦,将 C 风格的变量放在 @interface/@implementation 之上。很多人说尝试使用属性,有人说做静态方法单例技巧,我见过一个处理单例的小库,但这是我找到的最简单的解决方案。
我的问题-
- 众所周知,这很糟糕吗?
- 这有什么限制?
- 什么是替代品,什么是最好的?