Sample code for 30+ languages & platforms
Objective-C

Understanding Async Function Return Values

See more Async Examples

Explains how to get the return value of the function called synchonously in the background thread.

Chilkat Objective-C Downloads

Objective-C
#import <CkoSocket.h>
#import <CkoTask.h>
#import <NSString.h>

BOOL success = NO;

//  Some Chilkat functions can be called asynchronously.
//  If a function "Func" can be called asynchronously, there will be a corresponding "FuncAsync" function that returns a Task object.
//  
//  When Task.Run is called, the synchronous "Func" runs in a background thread.
//  

//  For Chilkat methods that return a status (true/false), get returned value by calling GetResultBool.
//  For example..

CkoSocket *sock = [[CkoSocket alloc] init];

//  --------------------------------------------------------------
//  Synchronous call returning true/false
success = [sock Connect: @"example.com" port: [NSNumber numberWithInt: 443] ssl: YES maxWaitMs: [NSNumber numberWithInt: 5000]];

//  --------------------------------------------------------------
//  Asynchronous call
CkoTask *task = [sock ConnectAsync: @"example.com" port: [NSNumber numberWithInt: 443] ssl: YES maxWaitMs: [NSNumber numberWithInt: 5000]];
//  ...
[task Run];
//  ...
//  ...
//  Get the status (true/false) value returned by the synchronous method called in the background thread.
success = [task GetResultBool];

//  --------------------------------------------------------------
//  Synchronous call returning an integer
int count = [[sock ReceiveCount] intValue];

//  --------------------------------------------------------------
//  Asynchronous call
task = [sock ReceiveCountAsync];
//  ...
[task Run];
//  ...
//  ...
//  Get the integer value returned by the synchronous method called in the background thread.
count = [[task GetResultInt] intValue];

//  --------------------------------------------------------------
//  Synchronous call returning an string
NSString *s = [sock ReceiveString];

//  --------------------------------------------------------------
//  Asynchronous call
task = [sock ReceiveStringAsync];
//  ...
[task Run];
//  ...
//  ...
//  Get the string value returned by the synchronous method called in the background thread.
s = [task GetResultString];

//  --------------------------------------------------------------
//  Synchronous call returning an object
CkoSocket *connection = [sock AcceptNextConnection: [NSNumber numberWithInt: 5000]];

//  --------------------------------------------------------------
//  Asynchronous call
task = [sock AcceptNextConnectionAsync];
//  ...
[task Run];
//  ...
//  ...
//  Get the object returned by the synchronous method called in the background thread.
//  We do this a little differently.  We create an new object of the same type,
//  and then load it with the returned object (assuming it was not null).
CkoSocket *acceptedConnection = [[CkoSocket alloc] init];
if (task.TaskSuccess == YES) {
    success = [acceptedConnection LoadTaskResult: task];
}