Files
GLEGram-iOS/submodules/MtProtoKit/Sources/Utils/MTQueueLocalObject.m
T
Leeksov 4647310322 GLEGram 12.5 — Initial public release
Based on Swiftgram 12.5 (Telegram iOS 12.5).
All GLEGram features ported and organized in GLEGram/ folder.

Features: Ghost Mode, Saved Deleted Messages, Content Protection Bypass,
Font Replacement, Fake Profile, Chat Export, Plugin System, and more.

See CHANGELOG_12.5.md for full details.
2026-04-06 09:48:12 +03:00

57 lines
1.1 KiB
Objective-C

#import "MTQueueLocalObject.h"
#import <MtProtoKit/MTQueue.h>
NS_ASSUME_NONNULL_BEGIN
@interface MTQueueLocalObjectHolder : NSObject
@property (nonatomic, assign) CFTypeRef impl;
@end
@implementation MTQueueLocalObjectHolder
@end
@interface MTQueueLocalObject () {
MTQueue *_queue;
MTQueueLocalObjectHolder *_holder;
}
@end
@implementation MTQueueLocalObject
- (instancetype)initWithQueue:(MTQueue *)queue generator:(id(^)())generator {
self = [super init];
if (self != nil) {
_queue = queue;
_holder = [[MTQueueLocalObjectHolder alloc] init];
__auto_type holder = _holder;
[queue dispatchOnQueue:^{
id value = generator();
holder.impl = CFBridgingRetain(value);
} synchronous:false];
}
return self;
}
- (void)dealloc {
__auto_type holder = _holder;
[_queue dispatchOnQueue:^{
CFBridgingRelease(holder.impl);
} synchronous:false];
}
- (void)with:(void (^)(id))f {
__auto_type holder = _holder;
[_queue dispatchOnQueue:^{
id value = (__bridge id)holder.impl;
f(value);
} synchronous:false];
}
@end
NS_ASSUME_NONNULL_END