我是一名 iOS 新手,我正在尝试了解一些在 iOS 应用程序中做事的“良好实践”方式。
我有一个 ViewController,我把它作为应用程序启动时调用的控制器。在其中,我看到了一个名为 viewDidLoad 的函数,我尝试对其进行修改以检查用户是否有 user_id,然后调用一个函数,该函数最终会发出异步请求来管理远程数据库中的该用户。这是我的代码:
- (void)viewDidLoad
{
[super viewDidLoad];
EmailUtil *email = [EmailUtil alloc];
email = [email init];
// This is just a test call to the function that would make a remote server request
[email setEmail: @"test" andBody: @"hello"];
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
if([standardUserDefaults objectForKey:@"user_id"] == nil)
{
NSLog(@"First time");
[standardUserDefaults setBool:YES forKey:@"user_id"];
}
else
{
NSString *subject = @"subject";
NSString *body = @"bod";
NSLog(@"Not first time");
}
}
所以这里有几件事我不确定。我正在调用一个函数以从 viewDidLoad 进行远程调用这一事实会导致该函数出现问题吗?目前它没有发送远程请求。
另外,我应该为我在这个函数结束时创建的对象释放内存吗?
或者我应该把这段代码移到课堂上的另一个地方,在那里有那个代码更有意义吗?
我这样称呼电子邮件对象:
[email setEmail: @"test" andBody: @"hello"];
这是 EmailUtil 类的代码:
//
// EmailUtil.m
//
#import "EmailUtil.h"
@implementation EmailUtil
-(void) setEmail: (NSString *) subject andBody: (NSString *) body
{
NSString *final_url = [NSString stringWithFormat:@"http://www.my_url.com?subject=%@&body=%@",subject, body];
NSURL *url = [NSURL URLWithString:final_url];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url ];
// TODO: ok I dont really understand what this is
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
NSLog(@"On return");
NSLog(@"This is data: %@" , data);
NSLog(@"This is response: %@" , response);
NSLog(@"This is error: %@" , error);
NSLog(@"OK");
}];
}
@end
谢谢!