diff --git a/packages/core/platforms/android/widgets-release.aar b/packages/core/platforms/android/widgets-release.aar index 6248b018c..70a6f01c9 100644 Binary files a/packages/core/platforms/android/widgets-release.aar and b/packages/core/platforms/android/widgets-release.aar differ diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Info.plist b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Info.plist index e78f57b5f..dd91f372b 100644 Binary files a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Info.plist and b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Info.plist differ diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/TNSWidgets b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/TNSWidgets index 415387102..2e60ce84a 100755 Binary files a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/TNSWidgets and b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/TNSWidgets differ diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/DWARF/TNSWidgets b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/DWARF/TNSWidgets index bd9f3f751..e331c02ae 100644 Binary files a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/DWARF/TNSWidgets and b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/DWARF/TNSWidgets differ diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Info.plist b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Info.plist index 05d998914..e37dcdb70 100644 Binary files a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Info.plist and b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Info.plist differ diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/TNSWidgets b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/TNSWidgets index d335b9342..a469138b4 100755 Binary files a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/TNSWidgets and b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/TNSWidgets differ diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/_CodeSignature/CodeResources b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/_CodeSignature/CodeResources index d7582fadc..87410be2e 100644 --- a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/_CodeSignature/CodeResources +++ b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/_CodeSignature/CodeResources @@ -34,7 +34,7 @@ Info.plist - WsLLFjQ3sruW6pvEfLRTXorurcg= + xwF1juLfCl48xVJYOqCb8tG0WhQ= Modules/module.modulemap diff --git a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/DWARF/TNSWidgets b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/DWARF/TNSWidgets index 8bbd13ed7..39731a8be 100644 Binary files a/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/DWARF/TNSWidgets and b/packages/core/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/DWARF/TNSWidgets differ diff --git a/packages/ui-mobile-base/ios/TNSWidgets/TNSWidgets/UIImage+TNSBlocks.m b/packages/ui-mobile-base/ios/TNSWidgets/TNSWidgets/UIImage+TNSBlocks.m index 155c9a9f1..135564cb9 100644 --- a/packages/ui-mobile-base/ios/TNSWidgets/TNSWidgets/UIImage+TNSBlocks.m +++ b/packages/ui-mobile-base/ios/TNSWidgets/TNSWidgets/UIImage+TNSBlocks.m @@ -12,65 +12,65 @@ @implementation UIImage (TNSBlocks) static dispatch_queue_t image_queue; -static NSLock* image_lock_handle; + (void) initialize { image_queue = dispatch_queue_create("org.nativescript.TNSWidgets.image", NULL); - if ([[NSProcessInfo processInfo] operatingSystemVersion].majorVersion >= 9) { - // UIImage imageNamed: is said to be thread safe, in iOS9 and later, in offical Apple reference. - image_lock_handle = nil; - } else { - image_lock_handle = [NSLock new]; - } } - (void) tns_forceDecode { - CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); - CGContextRef context = CGBitmapContextCreate(NULL, 1, 1, 8, 0, colorSpace, kCGImageAlphaPremultipliedFirst); - CGContextDrawImage(context, CGRectMake(0, 0, 1, 1), [self CGImage]); - CGContextRelease(context); - CGColorSpaceRelease(colorSpace); + @autoreleasepool { + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + CGContextRef context = CGBitmapContextCreate(NULL, 1, 1, 8, 0, colorSpace, kCGImageAlphaPremultipliedFirst); + CGContextDrawImage(context, CGRectMake(0, 0, 1, 1), [self CGImage]); + CGContextRelease(context); + CGColorSpaceRelease(colorSpace); + } } + (void) tns_safeDecodeImageNamed: (NSString*) name completion: (void (^) (UIImage*))callback { dispatch_async(image_queue, ^(void){ - [image_lock_handle lock]; - UIImage* image = [UIImage imageNamed: name]; - [image_lock_handle unlock]; - [image tns_forceDecode]; - - dispatch_async(dispatch_get_main_queue(), ^(void) { - callback(image); - }); + @autoreleasepool { + UIImage* image = [UIImage imageNamed: name]; + [image tns_forceDecode]; + + dispatch_async(dispatch_get_main_queue(), ^(void) { + callback(image); + }); + } }); } + (UIImage*) tns_safeImageNamed: (NSString*) name { - [image_lock_handle lock]; - UIImage* image = [UIImage imageNamed: name]; - [image_lock_handle unlock]; + UIImage* image; + @autoreleasepool { + image = [UIImage imageNamed: name]; + } return image; } + (void) tns_decodeImageWithData: (NSData*) data completion: (void (^) (UIImage*))callback { dispatch_async(image_queue, ^(void) { - UIImage* image = [UIImage imageWithData: data]; - [image tns_forceDecode]; - - dispatch_async(dispatch_get_main_queue(), ^(void) { - callback(image); - }); + @autoreleasepool { + UIImage* image = [UIImage imageWithData: data]; + [image tns_forceDecode]; + + dispatch_async(dispatch_get_main_queue(), ^(void) { + callback(image); + }); + } }); } + (void) tns_decodeImageWidthContentsOfFile: (NSString*) file completion: (void (^) (UIImage*))callback { dispatch_async(image_queue, ^(void) { - UIImage* image = [UIImage imageWithContentsOfFile: file]; - [image tns_forceDecode]; - - dispatch_async(dispatch_get_main_queue(), ^(void) { - callback(image); - }); + @autoreleasepool { + UIImage* image = [UIImage imageWithContentsOfFile: file]; + [image tns_forceDecode]; + + dispatch_async(dispatch_get_main_queue(), ^(void) { + callback(image); + }); + } }); }