iOS SDK 使ってると,こんな感じのコードがよくあります.
NSHTTPURLResponse *res;
NSError *error;
NSURL *url = [NSURL URLWithString:@"http://google.com"];
NSURLRequest *req = [NSURLRequest requestWithURL:url];
NSData *data = [NSURLConnection sendSynchronousRequest:req returningResponse:&res error:&error];
最後の[NSURLConnection sendSynchronousRequest: returningResponse: error:]の部分で,(NSHTTPURLResponse**)とか(NSError**)とかを引数に取ります.
この場合は,RubyMotionで書くとこうなります.
err_ptr = Pointer.new(:object)
res_ptr = Pointer.new(:object)
url = NSURL.URLWithString("http://google.com")
req = NSURLRequest.requestWithURL(url)
data = NSURLConnection.sendSynchronousRequest(
    req, 
    returningResponse:res_ptr,
    error:err_ptr)
@label.text = res_ptr[0].statusCode.to_s
簡単に言うと,(NSError**)とかを渡す所になっているメソッドは,Pointerのインスタンスを渡してあげて,error = err_ptr[0]とかしてデリファレンスして使ってやるといいです.

0 comments:
コメントを投稿