diff --git a/README.md b/README.md index 57f59070..7bef934a 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ Backendless SDK for iOS (http://backendless.com) --- -# Version 4.0 Beta 4 +# Version 4.0 Beta 5 > For the instructions for version 3.x of the library, see [Backendless 3.x Getting Started Guide](https://backendless.com/mobile-developers/quick-start-guide-for-ios/ "Backendless 3.x Getting Started Guide") ## GETTING STARTED WITH BACKENDLESS @@ -28,15 +28,19 @@ To create a new project with CocoaPods, follow the instructions below: 3. Create a Podfile. This can be done by running `pod init`. 4. Open your Podfile with a text editor, and add the following ``` -pod 'Backendless', '4.0b4' +pod 'Backendless', '4.0b5' ``` -5. Save Podfile, return to Terminal window and run `pod install`. Once all of the pod data is downloaded, Xcode project workspace file will be created. This is the file you must open when working on your app. +5. Save Podfile, return to Terminal window and run `pod install` and `pod update`. Once all of the pod data is downloaded/updated, Xcode project workspace file will be created. This is the file you must open when working on your app. 6. Open .xcworkspace file to launch your project. 7. If you use Swift, it is necessary to add a bridging header file. Navigate to "Build Settings -> Swift Compiler ... -> Objective-C Bridgeing Header" and add the following: `${PODS_ROOT}/Headers/Public/Backendless/Backendless-Bridging-Header.h` ## RELEASE HISTORY +4.0b5 April 28, 2017 +* Bug fixes + 4.0b4 April 25, 2017 + * Fixed and cleaned up register device methods in Messaging * Removed unregister device methods with IResponder * Cleaned up Subscribe methods in Messaging diff --git a/SDK/backendlessAPI/Classes/Backendless.h b/SDK/backendlessAPI/Classes/Backendless.h index d00f8b18..591927ed 100644 --- a/SDK/backendlessAPI/Classes/Backendless.h +++ b/SDK/backendlessAPI/Classes/Backendless.h @@ -5,17 +5,17 @@ * ********************************************************************************************************************* * * BACKENDLESS.COM CONFIDENTIAL - * + * * ******************************************************************************************************************** - * + * * Copyright 2012 BACKENDLESS.COM. All Rights Reserved. - * + * * NOTICE: All information contained herein is, and remains the property of Backendless.com and its suppliers, * if any. The intellectual and technical concepts contained herein are proprietary to Backendless.com and its * suppliers and may be covered by U.S. and Foreign Patents, patents in process, and are protected by trade secret * or copyright law. Dissemination of this information or reproduction of this material is strictly forbidden * unless prior written permission is obtained from Backendless.com. - * + * * ******************************************************************************************************************** */ diff --git a/SDK/backendlessAPI/Classes/Files/FileService.m b/SDK/backendlessAPI/Classes/Files/FileService.m old mode 100755 new mode 100644 index 31811295..3f02b688 --- a/SDK/backendlessAPI/Classes/Files/FileService.m +++ b/SDK/backendlessAPI/Classes/Files/FileService.m @@ -64,25 +64,25 @@ @implementation AsyncResponse @synthesize connection, receivedData, responseUrl, responder; -(id)init { - if ( (self=[super init]) ) { + if ( (self=[super init]) ) { connection = nil; receivedData = nil; responseUrl = nil; responder = nil; - } - - return self; + } + + return self; } -(void)dealloc { - - [DebLog logN:@"DEALLOC AsyncResponse"]; + + [DebLog logN:@"DEALLOC AsyncResponse"]; [receivedData release]; [responseUrl release]; [responder release]; - - [super dealloc]; + + [super dealloc]; } @end @@ -102,7 +102,7 @@ -(void)processAsyncResponse:(NSURLConnection *)connection; @implementation FileService -(id)init { - if ( (self=[super init]) ) { + if ( (self=[super init]) ) { [[Types sharedInstance] addClientClassMapping:@"com.backendless.services.persistence.NSArray" mapped:[NSArray class]]; [[Types sharedInstance] addClientClassMapping:@"com.backendless.management.files.FileDetailedInfo" mapped:BEFileInfo.class]; @@ -110,14 +110,14 @@ -(id)init { asyncResponses = [NSMutableArray new]; _permissions = [FilePermission new]; - } - - return self; + } + + return self; } -(void)dealloc { - - [DebLog log:@"DEALLOC FileService"]; + + [DebLog log:@"DEALLOC FileService"]; [NSObject cancelPreviousPerformRequestsWithTarget:self]; @@ -126,7 +126,7 @@ -(void)dealloc { [_permissions release]; - [super dealloc]; + [super dealloc]; } @@ -144,7 +144,7 @@ -(id)remove:(NSString *)fileURL { -(id)removeDirectory:(NSString *)path { if (!path || !path.length) - return [backendless throwFault:FAULT_NO_DIRECTORY_PATH]; + return [backendless throwFault:FAULT_NO_DIRECTORY_PATH]; NSArray *args = [NSArray arrayWithObjects:path, nil]; return [invoker invokeSync:SERVER_FILE_SERVICE_PATH method:METHOD_DELETE args:args]; } @@ -159,7 +159,7 @@ -(BackendlessFile *)saveFile:(NSString *)path fileName:(NSString *)fileName cont if (!fileName || !fileName.length) return [backendless throwFault:FAULT_NO_FILE_NAME]; if (!content || !content.length) - return [backendless throwFault:FAULT_NO_FILE_DATA]; + return [backendless throwFault:FAULT_NO_FILE_DATA]; NSArray *args = @[path, fileName, content, @(overwrite)]; NSString *receiveUrl = [invoker invokeSync:SERVER_FILE_SERVICE_PATH method:METHOD_SAVE_FILE args:args]; return [BackendlessFile file:receiveUrl]; @@ -186,7 +186,7 @@ -(NSString *)renameFile:(NSString *)oldPathName newName:(NSString *)newName { if (!oldPathName || !oldPathName.length) return [backendless throwFault:FAULT_NO_DIRECTORY_PATH]; if (!newName || !newName.length) - return [backendless throwFault:FAULT_NO_FILE_NAME]; + return [backendless throwFault:FAULT_NO_FILE_NAME]; NSArray *args = @[oldPathName, newName]; return [invoker invokeSync:SERVER_FILE_SERVICE_PATH method:METHOD_RENAME_FILE args:args]; } @@ -219,7 +219,7 @@ -(NSArray *)listing:(NSString *)path pattern:(NSString *)pattern recursive:(BOOL -(NSNumber *)exists:(NSString *)path { if (!path || !path.length) - return [backendless throwFault:FAULT_NO_DIRECTORY_PATH]; + return [backendless throwFault:FAULT_NO_DIRECTORY_PATH]; NSArray *args = @[path]; return [invoker invokeSync:SERVER_FILE_SERVICE_PATH method:METHOD_EXISTS args:args]; } @@ -228,7 +228,7 @@ -(NSNumber *)getFileCount:(NSString *)path pattern:(NSString *)pattern recursive if (!path || !path.length) return [backendless throwFault:FAULT_NO_DIRECTORY_PATH]; if (!pattern || !pattern.length) - return [backendless throwFault:FAULT_NO_PATTERN]; + return [backendless throwFault:FAULT_NO_PATTERN]; NSArray *args = @[path, pattern, @(recursive), @(countDirectories)]; return [invoker invokeSync:SERVER_FILE_SERVICE_PATH method:METHOD_COUNT args:args]; } @@ -264,7 +264,7 @@ -(void)saveFile:(NSString *)filePathName content:(NSData *)content overwriteIfEx if (!filePathName || !filePathName.length) return [responder errorHandler:FAULT_NO_FILE_NAME]; if (!content|| !content.length) - return [responder errorHandler:FAULT_NO_FILE_DATA]; + return [responder errorHandler:FAULT_NO_FILE_DATA]; NSArray *args = @[filePathName, content, @(overwrite)]; Responder *_responder = [Responder responder:self selResponseHandler:@selector(saveFileResponse:) selErrorHandler:nil]; _responder.chained = responder; @@ -285,7 +285,7 @@ -(void)getFileCount:(NSString *)path pattern:(NSString *)pattern recursive:(BOOL if (!path || !path.length) return [responder errorHandler:FAULT_NO_DIRECTORY_PATH]; if (!pattern || !pattern.length) - return [responder errorHandler:FAULT_NO_PATTERN]; + return [responder errorHandler:FAULT_NO_PATTERN]; NSArray *args = @[path, pattern, @(recursive), @(countDirectories)]; [invoker invokeAsync:SERVER_FILE_SERVICE_PATH method:METHOD_COUNT args:args responder:responder]; } @@ -337,7 +337,7 @@ -(void)renameFile:(NSString *)oldPathName newName:(NSString *)newName response:( -(void)copyFile:(NSString *)sourcePathName target:(NSString *)targetPathName response:(void(^)(NSString *))responseBlock error:(void(^)(Fault *))errorBlock { idresponder = [ResponderBlocksContext responderBlocksContext:responseBlock error:errorBlock]; if (!sourcePathName || !sourcePathName.length || !targetPathName || !targetPathName.length) - return [responder errorHandler:FAULT_NO_DIRECTORY_PATH]; + return [responder errorHandler:FAULT_NO_DIRECTORY_PATH]; NSArray *args = @[sourcePathName, targetPathName]; [invoker invokeAsync:SERVER_FILE_SERVICE_PATH method:METHOD_COPY_FILE args:args responder:responder]; } @@ -345,7 +345,7 @@ -(void)copyFile:(NSString *)sourcePathName target:(NSString *)targetPathName res -(void)moveFile:(NSString *)sourcePathName target:(NSString *)targetPathName response:(void(^)(NSString *))responseBlock error:(void(^)(Fault *))errorBlock { idresponder = [ResponderBlocksContext responderBlocksContext:responseBlock error:errorBlock]; if (!sourcePathName || !sourcePathName.length || !targetPathName || !targetPathName.length) - return [responder errorHandler:FAULT_NO_DIRECTORY_PATH]; + return [responder errorHandler:FAULT_NO_DIRECTORY_PATH]; NSArray *args = @[sourcePathName, targetPathName]; [invoker invokeAsync:SERVER_FILE_SERVICE_PATH method:METHOD_MOVE_FILE args:args responder:responder]; } @@ -371,14 +371,14 @@ -(void)getFileCount:(NSString *)path pattern:(NSString *)pattern recursive:(BOOL } -(void)getFileCount:(NSString *)path pattern:(NSString *)pattern recursive:(BOOL)recursive response:(void(^)(NSNumber *))responseBlock error:(void(^)(Fault *))errorBlock { - [self getFileCount:path pattern:pattern recursive:recursive countDirectories:NO responder:[ResponderBlocksContext responderBlocksContext:responseBlock error:errorBlock]]; + [self getFileCount:path pattern:pattern recursive:recursive countDirectories:NO responder:[ResponderBlocksContext responderBlocksContext:responseBlock error:errorBlock]]; } -(void)getFileCount:(NSString *)path pattern:(NSString *)pattern response:(void(^)(NSNumber *))responseBlock error:(void(^)(Fault *))errorBlock { - [self getFileCount:path pattern:pattern recursive:NO countDirectories:NO responder:[ResponderBlocksContext responderBlocksContext:responseBlock error:errorBlock]]; + [self getFileCount:path pattern:pattern recursive:NO countDirectories:NO responder:[ResponderBlocksContext responderBlocksContext:responseBlock error:errorBlock]]; } --(void)getFileCount:(NSString *)path response:(void(^)(NSNumber *))responseBlock error:(void(^)(Fault *))errorBlock { +-(void)getFileCount:(NSString *)path response:(void(^)(NSNumber *))responseBlock error:(void(^)(Fault *))errorBlock { [self getFileCount:path pattern:@"*" recursive:NO countDirectories:NO responder:[ResponderBlocksContext responderBlocksContext:responseBlock error:errorBlock]]; } @@ -507,5 +507,3 @@ -(void)connectionDidFinishLoading:(NSURLConnection *)connection { } @end - - diff --git a/SDK/backendlessAPI/Classes/Geo/GeoService.m b/SDK/backendlessAPI/Classes/Geo/GeoService.m index e934326e..c531f5aa 100644 --- a/SDK/backendlessAPI/Classes/Geo/GeoService.m +++ b/SDK/backendlessAPI/Classes/Geo/GeoService.m @@ -81,7 +81,7 @@ -(id)getError:(id)error; @implementation GeoService -(id)init { - if ( (self=[super init]) ) { + if ( (self=[super init]) ) { [[Types sharedInstance] addClientClassMapping:@"com.backendless.geo.model.GeoCategory" mapped:[GeoCategory class]]; [[Types sharedInstance] addClientClassMapping:@"com.backendless.geo.model.GeoPoint" mapped:[GeoPoint class]]; [[Types sharedInstance] addClientClassMapping:@"com.backendless.geo.model.GeoCluster" mapped:[GeoCluster class]]; @@ -90,17 +90,17 @@ -(id)init { [[Types sharedInstance] addClientClassMapping:@"com.backendless.services.persistence.NSArray" mapped:[NSArray class]]; [[Types sharedInstance] addClientClassMapping:@"com.backendless.geofence.model.GeoFenceAMF" mapped:[GeoFence class]]; _presence = [Presence new]; - } - return self; + } + return self; } -(void)dealloc { - - [DebLog logN:@"DEALLOC GeoService"]; + + [DebLog logN:@"DEALLOC GeoService"]; [_presence release]; - - [super dealloc]; + + [super dealloc]; } @@ -150,7 +150,7 @@ -(NSArray *)getPoints:(BackendlessGeoQuery *)query { if ([result isKindOfClass:[Fault class]]) { return result; } - + if (![result isKindOfClass:[NSArray class]]) { NSLog(@"GeoService->getPoints: (ERROR) [%@]\n%@", [result class], result); @@ -247,7 +247,7 @@ -(GeoPoint *)loadMetadata:(GeoPoint *)geoPoint { id fault = nil; if ((fault = [self isFaultGeoPoint:geoPoint responder:nil]) || (fault = [self isFaultGeoPointId:geoPoint.objectId responder:nil])) return fault; - + id query = [geoPoint isKindOfClass:[GeoCluster class]]? [(GeoCluster *)geoPoint geoQuery] : [NSNull null]; NSArray *args = @[geoPoint.objectId, query]; [geoPoint metadata:[invoker invokeSync:SERVER_GEO_SERVICE_PATH method:METHOD_LOAD_METADATA args:args]]; @@ -321,7 +321,7 @@ -(NSNumber *)getGeopointCount:(BackendlessGeoQuery *)query { NSArray *args = @[query]; return [invoker invokeSync:SERVER_GEO_SERVICE_PATH method:METHOD_COUNT args:args]; - + } -(NSNumber *)getGeopointCount:(NSString *)geoFenceName query:(BackendlessGeoQuery *)query { @@ -418,7 +418,7 @@ -(void)removePoint:(GeoPoint *)geoPoint responder:(id)responder { if ([self isFaultGeoPoint:geoPoint responder:responder] || [self isFaultGeoPointId:geoPoint.objectId responder:responder]) return; - + NSArray *args = [NSArray arrayWithObjects:geoPoint.objectId, nil]; [invoker invokeAsync:SERVER_GEO_SERVICE_PATH method:METHOD_DELETE_GEOPOINT args:args responder:responder]; } @@ -779,11 +779,11 @@ -(id)getResponse:(ResponseContext *)response { NSArray *collection = response.response; BackendlessGeoQuery *geoQuery = response.context; -// collection.query = geoQuery; + // collection.query = geoQuery; [collection type:[GeoPoint class]]; [self setReferenceToCluster:collection]; - + return collection; } @@ -796,7 +796,7 @@ -(id)getMetadata:(ResponseContext *)response { } -(id)getGeoFences:(ResponseContext *)response { - + id geoFences = response.response; id callback = response.context; [self addFenceMonitoring:callback geoFences:geoFences]; diff --git a/SDK/backendlessAPI/Classes/Persistence/MapDrivenDataStore.m b/SDK/backendlessAPI/Classes/Persistence/MapDrivenDataStore.m index d7f31259..5350b38a 100644 --- a/SDK/backendlessAPI/Classes/Persistence/MapDrivenDataStore.m +++ b/SDK/backendlessAPI/Classes/Persistence/MapDrivenDataStore.m @@ -113,7 +113,7 @@ -(NSArray *)find { -(NSArray *)find:(DataQueryBuilder *)queryBuilder { NSArray *args = @[_tableName, [queryBuilder build]]; - id result = [invoker invokeSync:_SERVER_PERSISTENCE_SERVICE_PATH method:@"" args:args]; + id result = [invoker invokeSync:_SERVER_PERSISTENCE_SERVICE_PATH method:@"find" args:args]; if ([result isKindOfClass:[Fault class]]) { return result; } diff --git a/SDK/backendlessAPI/Classes/UserService/UserService.m b/SDK/backendlessAPI/Classes/UserService/UserService.m index 7b23f487..2553eb15 100644 --- a/SDK/backendlessAPI/Classes/UserService/UserService.m +++ b/SDK/backendlessAPI/Classes/UserService/UserService.m @@ -191,7 +191,7 @@ -(BackendlessUser *)update:(BackendlessUser *)user { if (_isStayLoggedIn && _currentUser && [user.objectId isEqualToString:_currentUser.objectId]) { [self updateCurrentUser:result]; } -#endif +#endif return user; } @@ -737,33 +737,12 @@ -(id)onValidUserTokenFault:(Fault *)fault { @implementation UserService (SafariVC) -(UIViewController *)getCurrentViewController { - - - /* - // source: Parse -> PFAlertView.m - UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow; - UIViewController *viewController = keyWindow.rootViewController; - while (viewController.presentedViewController) { - viewController = viewController.presentedViewController; - } - return viewController; - */ - UIViewController *WindowRootVC = [[[[UIApplication sharedApplication] delegate] window] rootViewController]; UIViewController *currentViewController = [self findTopViewController:WindowRootVC]; - return currentViewController; } -(UIViewController *)findTopViewController:(UIViewController *)inController { - /* if ur using any Customs classes, do like this. - * Here SlideNavigationController is a subclass of UINavigationController. - * And ensure you check the custom classes before native controllers , if u have any in your hierarchy. - if ([inController isKindOfClass:[SlideNavigationController class]]) - { - return [self findTopViewController:[inController visibleViewController]]; - } - else */ if ([inController isKindOfClass:[UITabBarController class]]) { return [self findTopViewController:[(UITabBarController *)inController selectedViewController]]; } @@ -786,4 +765,3 @@ -(void)safariViewControllerDidFinish:(SFSafariViewController *)controller { @end #endif #endif - diff --git a/SDK/backendlessAPI/Classes/weborb/Client/HttpEngine.m b/SDK/backendlessAPI/Classes/weborb/Client/HttpEngine.m index 8780d2dd..df07146f 100644 --- a/SDK/backendlessAPI/Classes/weborb/Client/HttpEngine.m +++ b/SDK/backendlessAPI/Classes/weborb/Client/HttpEngine.m @@ -86,43 +86,43 @@ -(void)dealloc { @implementation HttpEngine --(id)init { - if ( (self=[super init]) ) { +-(id)init { + if ( (self=[super init]) ) { asyncResponses = [[NSMutableArray alloc] init]; isPolling = NO; - } - - return self; + } + + return self; } --(id)initWithUrl:(NSString *)url { - if ( (self=[super initWithUrl:url]) ) { +-(id)initWithUrl:(NSString *)url { + if ( (self=[super initWithUrl:url]) ) { asyncResponses = [[NSMutableArray alloc] init]; isPolling = NO; - } - - return self; + } + + return self; } --(id)initWithUrl:(NSString *)url info:(IdInfo *)info { - if ( (self=[super initWithUrl:url info:info]) ) { +-(id)initWithUrl:(NSString *)url info:(IdInfo *)info { + if ( (self=[super initWithUrl:url info:info]) ) { asyncResponses = [[NSMutableArray alloc] init]; isPolling = NO; - } - - return self; + } + + return self; } -(void)dealloc { - - [DebLog logN:@"DEALLOC HttpEngine"]; + + [DebLog logN:@"DEALLOC HttpEngine"]; [NSObject cancelPreviousPerformRequestsWithTarget:self]; [asyncResponses removeAllObjects]; [asyncResponses release]; - - [super dealloc]; + + [super dealloc]; } @@ -141,20 +141,20 @@ -(NSData *)createRequest:(V3Message *)v3Msg headers:(NSDictionary *)headers { [headersArray addObject:[MHeader headerWithObject:obj name:headerName]]; } } - + NSString *null = @"null"; Body *body = [Body bodyWithObject:nil serviceURI:null responseURI:null length:-1]; NSMutableArray *bodiesArray = [NSMutableArray arrayWithObjects:body, nil]; Request *request = [Request request:(float)AMF3 headers:headersArray bodies:bodiesArray]; - [request setResponseBodyData:[NSArray arrayWithObjects:v3Msg, nil]]; + [request setResponseBodyData:[NSArray arrayWithObjects:v3Msg, nil]]; BinaryStream *data = [AMFSerializer serializeToBytes:request]; #if ON_PRINT_REQUEST [DebLog logY:@"HttpEngine -> createRequest: clientId = '%@'\n%@", v3Msg.clientId, request]; [data print:YES]; #endif - + return [NSData dataWithBytes:data.buffer length:data.size]; } @@ -175,7 +175,7 @@ -(AsyncHttpResponse *)asyncHttpResponse:(NSURLConnection *)connection { -(void)processAsyncAMFResponse:(AsyncHttpResponse *)async { id responder = (async.responder) ? async.responder : _responder; - + int statusCode = [async.responseUrl statusCode]; if (statusCode != 200) { @@ -196,7 +196,7 @@ -(void)processAsyncAMFResponse:(AsyncHttpResponse *)async { NSString *body = [[[NSString alloc] initWithData:async.receivedData encoding:NSUTF8StringEncoding] autorelease]; [DebLog log:@"HttpEngine -> processAsyncAMFResponse: response with *** INVALID 'Content-Type' = '%@', body = '%@'", contentType, body]; - + Fault *fault = [Fault fault:@"HttpEngine: INVALID response 'Content-Type'" detail:contentType faultCode:@"9000"]; [responder errorHandler:fault]; @@ -204,8 +204,8 @@ -(void)processAsyncAMFResponse:(AsyncHttpResponse *)async { [async release]; return; } - - FlashorbBinaryReader *reader = [[FlashorbBinaryReader alloc] + + FlashorbBinaryReader *reader = [[FlashorbBinaryReader alloc] initWithStream:(char *)[async.receivedData bytes] andSize:[async.receivedData length]]; [DebLog log:ON_PRINT_RESPONSE text:@"HttpEngine -> processAsyncAMFResponse: (ASYNC RESPONSE)\n"]; @@ -228,19 +228,19 @@ -(void)processAsyncAMFResponse:(AsyncHttpResponse *)async { idInfo.dsId = (NSString *)v3.headers[@"DSId"]; if (!idInfo.clientId) idInfo.clientId = (NSString *)v3.clientId; - + [DebLog logN:@"@@@@@ idInfo: dsId = '%@', clientId = '%@', destination = '%@'", idInfo.dsId, idInfo.clientId, idInfo.destination]; } - - if (v3.isError) { + if (v3.isError) { + //typing and sent to delegate ErrMessage *result = (ErrMessage *)v3; Fault *fault = [Fault fault:result.faultString detail:result.faultDetail faultCode:result.faultCode]; [responder errorHandler:fault]; } else { - + id result = v3.body.body; [DebLog log:_ON_HEADERS_LOG_ text:@"HttpEngine -> processAsyncAMFResponse: v3.headers = %@\n", v3.headers]; @@ -261,15 +261,15 @@ -(void)pollingResponse:(id)result { if (!result) return; - NSArray *arr = ([result isKindOfClass:[ArrayType class]]) ? [(ArrayType *)result getArray] : - ([result isKindOfClass:[NSArray class]]) ? (NSArray *)result : nil; + NSArray *arr = ([result isKindOfClass:[ArrayType class]]) ? [(ArrayType *)result getArray] : + ([result isKindOfClass:[NSArray class]]) ? (NSArray *)result : nil; if (!arr) return; [DebLog logN:@"HttpEngine -> pollingResponse: async array count = %d", arr.count]; - for (id async in arr) { + for (id async in arr) { if ([async isMemberOfClass:[AsyncMessage class]]) [self receivedMessage:async]; } @@ -289,7 +289,7 @@ -(void)receiveMessages:(id)obj { //printf("\n############################################### NEW POLLING #################################################\n\n"); - [DebLog logN:@"HttpEngine -> receiveMessages: obj = %@", obj]; + [DebLog logN:@"HttpEngine -> receiveMessages: obj = %@", obj]; [self sendRequest:[Subscription getCommandMessage:@"2" subTopic:subTopic selector:selector idInfo:idInfo] responder: [Responder responder:self selResponseHandler:@selector(pollingResponse:) selErrorHandler:@selector(pollingError:)] repeated:NO]; @@ -321,7 +321,7 @@ -(NSURLRequest *)httpPostRequest:(V3Message *)v3Msg { [webReq setHTTPBody:[self createRequest:v3Msg]]; [DebLog logN:@"HttpEngine -> httpPostRequest: url: %@, headers: %@", url, [webReq allHTTPHeaderFields]]; - + return webReq; } @@ -374,9 +374,9 @@ -(id)sendRequest:(V3Message *)v3Msg { receivedData = [NSURLConnection sendSynchronousRequest:request returningResponse:&responseUrl error:&error]; } #endif - + [self setNetworkActivityIndicatorOn:NO]; - + if (!receivedData) { Fault *fault = (error) ? [Fault fault:[error domain] detail:[error localizedDescription] faultCode:[NSString stringWithFormat:@"%ld",(long)[error code]]] : UNKNOWN_FAULT; [DebLog log:@"HttpEngine -> sendRequest: (SYNC) %@", fault]; @@ -391,7 +391,7 @@ -(id)sendRequest:(V3Message *)v3Msg { NSString *code = [NSString stringWithFormat:@"%d", statusCode]; NSString *detail = [NSHTTPURLResponse localizedStringForStatusCode:statusCode]; return [Fault fault:detail detail:detail faultCode:code]; - } + } NSString *contentType = [[responseUrl allHeaderFields] valueForKey:@"Content-Type"]; if (!(contentType) || ![contentType isEqualToString:@"application/x-amf"]) { @@ -399,7 +399,7 @@ -(id)sendRequest:(V3Message *)v3Msg { NSString *body = [[[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding] autorelease]; [DebLog log:@"HttpEngine -> sendRequest: (SYNC) response with *** INVALID 'Content-Type' = '%@', body = '%@'", contentType, body]; - + return [Fault fault:@"HttpEngine: INVALID response 'Content-Type'" detail:contentType faultCode:@"9000"]; } @@ -419,8 +419,8 @@ -(id)sendRequest:(V3Message *)v3Msg { [reader release]; [DebLog log:ON_PRINT_RESPONSE text:@"HttpEngine -> sendRequest: (SYNC) type: %@, type.defaultAdapt = '%@', v3 = '%@'", type, [v3 class], v3]; - - if (v3) { + + if (v3) { if (idInfo) { if (!idInfo.dsId && v3.headers) @@ -432,7 +432,7 @@ -(id)sendRequest:(V3Message *)v3Msg { } if (v3.isError) { - + //typing and sent to delegate ErrMessage *result = (ErrMessage *)v3; @@ -503,7 +503,7 @@ -(void)onSubscribed:(NSString *)_subTopic selector:(NSString *)_selector respond [super onSubscribed:_subTopic selector:_selector responder:responder]; - if (isPolling) + if (isPolling) return; [self receiveMessages:nil]; @@ -514,7 +514,7 @@ -(void)onUnsubscribed { [DebLog logN:@"HttpEngine -> onUnsubscribed"]; - if (!isPolling) + if (!isPolling) return; [NSObject cancelPreviousPerformRequestsWithTarget:self]; @@ -550,13 +550,13 @@ -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLRespons int statusCode = [responseUrl statusCode]; [DebLog logY:@"HttpEngine ->connection didReceiveResponse: statusCode=%d ('%@')\nheaders:\n%@", statusCode, [NSHTTPURLResponse localizedStringForStatusCode:statusCode], [responseUrl allHeaderFields]]; #endif - // connection is starting, clear buffer + // connection is starting, clear buffer [async.receivedData setLength:0]; // save response url async.responseUrl = responseUrl; } --(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { +-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { AsyncHttpResponse *async = [self asyncHttpResponse:connection]; if (!async) @@ -564,7 +564,7 @@ -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { [DebLog logN:@"HttpEngine ->connection didReceiveData: length = %d", [data length]]; - // data is arriving, add it to the buffer + // data is arriving, add it to the buffer [async.receivedData appendData:data]; } @@ -576,8 +576,8 @@ -(void)connection:(NSURLConnection*)connection didFailWithError:(NSError *)error if (!async) return; - // something went wrong, release connection - [connection release]; + // something went wrong, release connection + [connection release]; connection = nil; #if REPEAT_REQUEST_ON @@ -589,7 +589,7 @@ -(void)connection:(NSURLConnection*)connection didFailWithError:(NSError *)error return; } #endif - + Fault *fault = (error) ? [Fault fault:[error domain] detail:[error localizedDescription] faultCode:[NSString stringWithFormat:@"%ld",(long)[error code]]] : UNKNOWN_FAULT; [async.responder errorHandler:fault]; @@ -598,7 +598,7 @@ -(void)connection:(NSURLConnection*)connection didFailWithError:(NSError *)error [async release]; } --(void)connectionDidFinishLoading:(NSURLConnection *)connection { +-(void)connectionDidFinishLoading:(NSURLConnection *)connection { [self setNetworkActivityIndicatorOn:NO]; @@ -626,4 +626,3 @@ -(void)connectionDidFinishLoading:(NSURLConnection *)connection { } @end - diff --git a/SDK/backendlessAPI/Classes/weborb/Reader/AnonymousObject.m b/SDK/backendlessAPI/Classes/weborb/Reader/AnonymousObject.m index ec97a0a9..b2221352 100644 --- a/SDK/backendlessAPI/Classes/weborb/Reader/AnonymousObject.m +++ b/SDK/backendlessAPI/Classes/weborb/Reader/AnonymousObject.m @@ -19,25 +19,25 @@ @implementation AnonymousObject @synthesize properties; --(id)init { - if ( (self=[super init]) ) { - self.properties = [NSMutableDictionary dictionary]; - } - - return self; +-(id)init { + if ( (self=[super init]) ) { + self.properties = [NSMutableDictionary dictionary]; + } + + return self; } --(id)initWithNode:(NSMutableDictionary *)dictionary { - if ( (self=[super init]) ) { - self.properties = dictionary; - } - - return self; +-(id)initWithNode:(NSMutableDictionary *)dictionary { + if ( (self=[super init]) ) { + self.properties = dictionary; + } + + return self; } +(id)objectType { #if AUTORELEASED_ANONYMOUS_OBJECT - return [[[AnonymousObject alloc] init] autorelease]; + return [[[AnonymousObject alloc] init] autorelease]; #else return [AnonymousObject new]; #endif @@ -48,15 +48,15 @@ +(id)objectType:(NSMutableDictionary *)dictionary { #if AUTORELEASED_ANONYMOUS_OBJECT return [[[AnonymousObject alloc] initWithNode:dictionary] autorelease]; #else - return [[AnonymousObject alloc] initWithNode:dictionary]; + return [[AnonymousObject alloc] initWithNode:dictionary]; #endif } -(void)dealloc { - - [DebLog logN:@"DEALLOC AnonymousObject"]; - - [super dealloc]; + + [DebLog logN:@"DEALLOC AnonymousObject"]; + + [super dealloc]; } @@ -66,7 +66,7 @@ -(void)dealloc { -(Class)propertyType:(NSString *)attributes { const char *attr = [attributes UTF8String]; - if (attr[0] != 'T' || attr[1] != '@') + if (attr[0] != 'T' || attr[1] != '@') return [NSNull class]; if (attr[2] == ',') @@ -93,7 +93,7 @@ -(Class)propertyType:(NSString *)attributes { return [NSObject class]; } --(char)propertyCode:(NSString *)attributes { +-(char)propertyCode:(NSString *)attributes { const char *attr = [attributes UTF8String]; return (attributes && (attributes.length > 1) && attr[0] == 'T') ? attr[1] : 0; } @@ -103,7 +103,7 @@ -(id)propertyValue:(id)obj { } -(id)setFieldsDirect:(id)obj cache:(ReaderReferenceCache *)referenceCache { - + NSDictionary *props = [Types propertyDictionary:obj]; NSDictionary *attrs = [Types propertyKeysWithAttributes:obj]; NSArray *names = [props allKeys]; @@ -121,14 +121,14 @@ -(id)setFieldsDirect:(id)obj cache:(ReaderReferenceCache *)referenceCache { id propValue = [properties valueForKey:memberName]; if (!propValue) { - + // and with uppercased first char of property name? NSString *upper = [memberName firstCharToUpper]; propValue = [properties valueForKey:upper]; [DebLog logN:@"AnonymousObject -> setFieldsDirect: (upper) %@ = %@", upper, propValue]; } - + if (!propValue || [propValue isKindOfClass:[NSNull class]]) { [DebLog logN:@"AnonymousObject -> setFieldsDirect: PROPERTY %@ WAS NOT FOUND, propValue = %@", memberName, propValue]; continue; @@ -141,7 +141,7 @@ -(id)setFieldsDirect:(id)obj cache:(ReaderReferenceCache *)referenceCache { [DebLog log:_ON_READERS_LOG_ text:@"AnonymousObject -> setFieldsDirect: '%@' NEED ADAPT %@ <%@> TO <%@> [%@] {%c}", memberName, propValue, [propValue class], propertyType, attributes, propertyCode]; if (propertyCode == '@') { - + if ([propValue conformsToProtocol:@protocol(IAdaptingType)]) { [DebLog log:_ON_READERS_LOG_ text:@"AnonymousObject -> setFieldsDirect: @protocol(IAdaptingType)"]; @@ -154,11 +154,11 @@ -(id)setFieldsDirect:(id)obj cache:(ReaderReferenceCache *)referenceCache { [referenceCache addObject:propValue type:propertyType object:val]; propValue = val; - + [DebLog log:_ON_READERS_LOG_ text:@"AnonymousObject -> setFieldsDirect: (1) propValue = %@", propValue]; } else { - + if ([propValue conformsToProtocol:@protocol(ICacheableAdaptingType)]) { propValue = [propValue adapt:propertyType cache:referenceCache]; @@ -168,7 +168,7 @@ -(id)setFieldsDirect:(id)obj cache:(ReaderReferenceCache *)referenceCache { propValue = [propValue adapt:propertyType]; [DebLog log:_ON_READERS_LOG_ text:@"AnonymousObject -> setFieldsDirect: (3) propValue = %@", propValue]; - } + } } } else { @@ -179,7 +179,7 @@ -(id)setFieldsDirect:(id)obj cache:(ReaderReferenceCache *)referenceCache { propValue = [NSSet setWithArray:propValue]; [DebLog logN:@"AnonymousObject -> setFieldsDirect: ***** NSSet from NSArray ******"]; } - } + } } else { if ([propValue conformsToProtocol:@protocol(IAdaptingType)]) { @@ -196,7 +196,7 @@ -(id)setFieldsDirect:(id)obj cache:(ReaderReferenceCache *)referenceCache { } [DebLog log:_ON_READERS_LOG_ text:@"AnonymousObject -> setFieldsDirect: %@ [%c] SET %@ <%@>", memberName, propertyCode, propValue, [propValue class]]; - + if (propValue && ![propValue isKindOfClass:[NSNull class]]) { @try { @@ -209,7 +209,7 @@ -(id)setFieldsDirect:(id)obj cache:(ReaderReferenceCache *)referenceCache { } [DebLog log:_ON_READERS_LOG_ text:@"AnonymousObject -> setFieldsDirect: (!!!!!!) SET ALL PROPERTIES obj = %@ <%@>", obj, [obj class]]; - + #if _ON_RESOLVING_ABSENT_PROPERTY_ // add "on the fly" properties to obj ------------------------------------------------------------------------ NSArray *_properties = [properties allKeys]; @@ -226,7 +226,7 @@ -(id)setFieldsDirect:(id)obj cache:(ReaderReferenceCache *)referenceCache { } #endif id propertyValue = [properties valueForKey:prop]; - + #if 0 // TEMPOPARY: included NamedObject deserialization is blocked - STRAINGE RECURSIVE LOOP !!! if ([propertyValue isKindOfClass:[NamedObject class]]) { [DebLog logY:@"AnonymousObject -> setFieldsDirect: (!!! BLOCKED !!!) PROPERTY '%@'[%@]", prop, [propertyValue description]]; @@ -245,10 +245,10 @@ -(id)setFieldsDirect:(id)obj cache:(ReaderReferenceCache *)referenceCache { } [DebLog log:_ON_READERS_LOG_ text:@"AnonymousObject -> setFieldsDirect: FINISHED (0) obj = %@ <%@>\n%@\n\n", obj, [obj class], [Types propertyDictionary:obj]]; - + #endif // _ON_RESOLVING_ABSENT_PROPERTY_ -------------------------------------------------------------------------------------------------------- - -// deserializer pastprocessor + + // deserializer pastprocessor #if TYPES_AMF_DESERIALIZE_POSTPROCESSOR_ON if ([obj isKindOfClass:[V3Message class]]) { V3Message *v3 = (V3Message *)obj; @@ -286,20 +286,20 @@ -(id)setFieldsDirect:(id)obj cache:(ReaderReferenceCache *)referenceCache { 2016-07-08 14:34:46.770 TestCUserService[45206:11659733] AnonymousObject -> defaultAdapt: (3) obj = '' 2016-07-08 14:34:46.770 TestCUserService[45206:11659733] AnonymousObject -> defaultAdapt: (2) refCache = 2016-07-08 14:34:46.770 TestCUserService[45206:11659733] ReaderReferenceCache <> -> hasObject: key=140384669090688, type=__NSDictionaryM -*/ + */ #pragma mark - #pragma mark ICacheableAdaptingType Methods -(Class)getDefaultType { - return [properties class]; + return [properties class]; } -(id)defaultAdapt { - - [DebLog log:_ON_READERS_LOG_ text:@"AnonymousObject -> defaultAdapt (0)"]; - - return [self defaultAdapt:[ReaderReferenceCache cache]]; + + [DebLog log:_ON_READERS_LOG_ text:@"AnonymousObject -> defaultAdapt (0)"]; + + return [self defaultAdapt:[ReaderReferenceCache cache]]; } #if 1 // !!!!! NEW !!!! @@ -345,8 +345,8 @@ -(id)defaultAdapt:(ReaderReferenceCache *)refCache { } #else -(id)defaultAdapt:(ReaderReferenceCache *)refCache { - - [DebLog log:_ON_READERS_LOG_ text:@"AnonymousObject -> defaultAdapt: (1) refCache = %@", refCache]; + + [DebLog log:_ON_READERS_LOG_ text:@"AnonymousObject -> defaultAdapt: (1) refCache = %@", refCache]; if ([refCache hasObject:self]) { [DebLog log:_ON_READERS_LOG_ text:@"AnonymousObject -> defaultAdapt: (2) refCache has %@", self]; @@ -365,7 +365,7 @@ -(id)defaultAdapt:(ReaderReferenceCache *)refCache { obj = hashtable; } else { - + if ([obj conformsToProtocol:@protocol(ICacheableAdaptingType)]) { id val = [obj defaultAdapt:refCache]; [refCache addObject:obj object:val]; @@ -422,15 +422,15 @@ -(id)defaultAdapt:(ReaderReferenceCache *)refCache { #endif -(id)adapt:(Class)type { - + [DebLog log:_ON_READERS_LOG_ text:@"AnonymousObject -> adapt: %@", type]; - + return [self adapt:type cache:[ReaderReferenceCache cache]]; } -(id)adapt:(Class)type cache:(ReaderReferenceCache *)refCache { - - [DebLog log:_ON_READERS_LOG_ text:@"AnonymousObject -> adapt:cache: (START) type = %@", type]; + + [DebLog log:_ON_READERS_LOG_ text:@"AnonymousObject -> adapt:cache: (START) type = %@", type]; id obj = [refCache getObject:self type:type]; if (obj) { @@ -474,16 +474,16 @@ -(id)adapt:(Class)type cache:(ReaderReferenceCache *)refCache { if ((obj) && [obj isKindOfClass:[NSDictionary class]]) { [DebLog log:_ON_READERS_LOG_ text:@"AnonymousObject -> adapt:cache: type is a dictionary!"]; - + NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; NSArray *keys = [properties allKeys]; for (id key in keys) { id valueObj = [properties objectForKey:key]; - if ([valueObj conformsToProtocol:@protocol(ICacheableAdaptingType)]) + if ([valueObj conformsToProtocol:@protocol(ICacheableAdaptingType)]) valueObj = [valueObj defaultAdapt:refCache]; - else - valueObj = [valueObj defaultAdapt]; + else + valueObj = [valueObj defaultAdapt]; if (!valueObj) valueObj = [NSNull null]; [dictionary setObject:valueObj forKey:key]; @@ -493,10 +493,10 @@ -(id)adapt:(Class)type cache:(ReaderReferenceCache *)refCache { else { obj = [self setFieldsDirect:obj cache:refCache]; } - + [DebLog log:_ON_READERS_LOG_ text:@"AnonymousObject -> adapt:cache: (FINISHED) type = %@, obj = %@", type, obj]; - return obj; + return obj; } -(id )getCacheKey { diff --git a/SDK/backendlessAPI/Classes/weborb/Types/Types.h b/SDK/backendlessAPI/Classes/weborb/Types/Types.h index 7ab9e426..54275023 100644 --- a/SDK/backendlessAPI/Classes/weborb/Types/Types.h +++ b/SDK/backendlessAPI/Classes/weborb/Types/Types.h @@ -14,14 +14,14 @@ #define __types [Types sharedInstance] @interface Types : NSObject { - NSMutableDictionary *abstractMappings; - NSMutableDictionary *clientMappings; - NSMutableDictionary *serverMappings; + NSMutableDictionary *abstractMappings; + NSMutableDictionary *clientMappings; + NSMutableDictionary *serverMappings; } @property (nonatomic, retain) NSString *swiftClassPrefix; -// Singleton accessor: this is how you should ALWAYS get a reference to the class instance. Never init your own. +// Singleton accessor: this is how you should ALWAYS get a reference to the class instance. Never init your own. +(Types *)sharedInstance; // type mapping @@ -89,4 +89,3 @@ -(BOOL)replaceProperties:(NSArray *)names; -(BOOL)replaceAllProperties; @end - diff --git a/SDK/ios/backendless/backendless.a b/SDK/ios/backendless/backendless.a index 657598f1..e9719866 100644 Binary files a/SDK/ios/backendless/backendless.a and b/SDK/ios/backendless/backendless.a differ diff --git a/SDK/ios/backendless/include/Backendless.h b/SDK/ios/backendless/include/Backendless.h index d00f8b18..591927ed 100644 --- a/SDK/ios/backendless/include/Backendless.h +++ b/SDK/ios/backendless/include/Backendless.h @@ -5,17 +5,17 @@ * ********************************************************************************************************************* * * BACKENDLESS.COM CONFIDENTIAL - * + * * ******************************************************************************************************************** - * + * * Copyright 2012 BACKENDLESS.COM. All Rights Reserved. - * + * * NOTICE: All information contained herein is, and remains the property of Backendless.com and its suppliers, * if any. The intellectual and technical concepts contained herein are proprietary to Backendless.com and its * suppliers and may be covered by U.S. and Foreign Patents, patents in process, and are protected by trade secret * or copyright law. Dissemination of this information or reproduction of this material is strictly forbidden * unless prior written permission is obtained from Backendless.com. - * + * * ******************************************************************************************************************** */ diff --git a/SDK/ios/backendless/include/Types.h b/SDK/ios/backendless/include/Types.h index 7ab9e426..54275023 100644 --- a/SDK/ios/backendless/include/Types.h +++ b/SDK/ios/backendless/include/Types.h @@ -14,14 +14,14 @@ #define __types [Types sharedInstance] @interface Types : NSObject { - NSMutableDictionary *abstractMappings; - NSMutableDictionary *clientMappings; - NSMutableDictionary *serverMappings; + NSMutableDictionary *abstractMappings; + NSMutableDictionary *clientMappings; + NSMutableDictionary *serverMappings; } @property (nonatomic, retain) NSString *swiftClassPrefix; -// Singleton accessor: this is how you should ALWAYS get a reference to the class instance. Never init your own. +// Singleton accessor: this is how you should ALWAYS get a reference to the class instance. Never init your own. +(Types *)sharedInstance; // type mapping @@ -89,4 +89,3 @@ -(BOOL)replaceProperties:(NSArray *)names; -(BOOL)replaceAllProperties; @end - diff --git a/SDK/lib/backendless/backendless.a b/SDK/lib/backendless/backendless.a index 9782e357..c5834eca 100644 Binary files a/SDK/lib/backendless/backendless.a and b/SDK/lib/backendless/backendless.a differ diff --git a/SDK/lib/backendless/include/Backendless.h b/SDK/lib/backendless/include/Backendless.h index d00f8b18..591927ed 100644 --- a/SDK/lib/backendless/include/Backendless.h +++ b/SDK/lib/backendless/include/Backendless.h @@ -5,17 +5,17 @@ * ********************************************************************************************************************* * * BACKENDLESS.COM CONFIDENTIAL - * + * * ******************************************************************************************************************** - * + * * Copyright 2012 BACKENDLESS.COM. All Rights Reserved. - * + * * NOTICE: All information contained herein is, and remains the property of Backendless.com and its suppliers, * if any. The intellectual and technical concepts contained herein are proprietary to Backendless.com and its * suppliers and may be covered by U.S. and Foreign Patents, patents in process, and are protected by trade secret * or copyright law. Dissemination of this information or reproduction of this material is strictly forbidden * unless prior written permission is obtained from Backendless.com. - * + * * ******************************************************************************************************************** */ diff --git a/SDK/lib/backendless/include/Types.h b/SDK/lib/backendless/include/Types.h index 7ab9e426..54275023 100644 --- a/SDK/lib/backendless/include/Types.h +++ b/SDK/lib/backendless/include/Types.h @@ -14,14 +14,14 @@ #define __types [Types sharedInstance] @interface Types : NSObject { - NSMutableDictionary *abstractMappings; - NSMutableDictionary *clientMappings; - NSMutableDictionary *serverMappings; + NSMutableDictionary *abstractMappings; + NSMutableDictionary *clientMappings; + NSMutableDictionary *serverMappings; } @property (nonatomic, retain) NSString *swiftClassPrefix; -// Singleton accessor: this is how you should ALWAYS get a reference to the class instance. Never init your own. +// Singleton accessor: this is how you should ALWAYS get a reference to the class instance. Never init your own. +(Types *)sharedInstance; // type mapping @@ -89,4 +89,3 @@ -(BOOL)replaceProperties:(NSArray *)names; -(BOOL)replaceAllProperties; @end - diff --git a/SDK/osx/backendless/include/Backendless.h b/SDK/osx/backendless/include/Backendless.h index d00f8b18..591927ed 100644 --- a/SDK/osx/backendless/include/Backendless.h +++ b/SDK/osx/backendless/include/Backendless.h @@ -5,17 +5,17 @@ * ********************************************************************************************************************* * * BACKENDLESS.COM CONFIDENTIAL - * + * * ******************************************************************************************************************** - * + * * Copyright 2012 BACKENDLESS.COM. All Rights Reserved. - * + * * NOTICE: All information contained herein is, and remains the property of Backendless.com and its suppliers, * if any. The intellectual and technical concepts contained herein are proprietary to Backendless.com and its * suppliers and may be covered by U.S. and Foreign Patents, patents in process, and are protected by trade secret * or copyright law. Dissemination of this information or reproduction of this material is strictly forbidden * unless prior written permission is obtained from Backendless.com. - * + * * ******************************************************************************************************************** */ diff --git a/SDK/osx/backendless/include/Types.h b/SDK/osx/backendless/include/Types.h index 7ab9e426..54275023 100644 --- a/SDK/osx/backendless/include/Types.h +++ b/SDK/osx/backendless/include/Types.h @@ -14,14 +14,14 @@ #define __types [Types sharedInstance] @interface Types : NSObject { - NSMutableDictionary *abstractMappings; - NSMutableDictionary *clientMappings; - NSMutableDictionary *serverMappings; + NSMutableDictionary *abstractMappings; + NSMutableDictionary *clientMappings; + NSMutableDictionary *serverMappings; } @property (nonatomic, retain) NSString *swiftClassPrefix; -// Singleton accessor: this is how you should ALWAYS get a reference to the class instance. Never init your own. +// Singleton accessor: this is how you should ALWAYS get a reference to the class instance. Never init your own. +(Types *)sharedInstance; // type mapping @@ -89,4 +89,3 @@ -(BOOL)replaceProperties:(NSArray *)names; -(BOOL)replaceAllProperties; @end - diff --git a/SDK/osx/backendless/libbackendless-mac.a b/SDK/osx/backendless/libbackendless-mac.a index 459cafd4..a95e2049 100644 Binary files a/SDK/osx/backendless/libbackendless-mac.a and b/SDK/osx/backendless/libbackendless-mac.a differ