私は iOS の初心者であり、iOS アプリでの「良い実践」方法のいくつかを理解しようとしています。
アプリの起動時に呼び出されるコントローラーになるように作成した ViewController があります。その中にviewDidLoadという関数があり、それを変更してユーザーがuser_idを持っているかどうかを確認し、最終的に非同期リクエストを作成してリモートdbでそのユーザーを管理する関数を呼び出そうとしました。これが私のコードです:
- (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
ありがとうございました!