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);
+ });
+ }
});
}