CoolFlutterIjkManager.m 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. //
  2. // Created by Caijinglong on 2019-03-08.
  3. //
  4. #import "CoolFlutterIjkManager.h"
  5. #import "CoolFlutterIJK.h"
  6. #import <IJKMediaFramework/IJKMediaFramework.h>
  7. @implementation CoolFlutterIjkManager {
  8. NSMutableDictionary<NSNumber *, CoolFlutterIJK *> *dict;
  9. }
  10. - (instancetype)initWithRegistrar:(NSObject <FlutterPluginRegistrar> *)registrar {
  11. self = [super init];
  12. if (self) {
  13. self.registrar = registrar;
  14. dict = [NSMutableDictionary new];
  15. }
  16. return self;
  17. }
  18. + (instancetype)managerWithRegistrar:(NSObject <FlutterPluginRegistrar> *)registrar {
  19. return [[self alloc] initWithRegistrar:registrar];
  20. }
  21. - (int64_t)create {
  22. CoolFlutterIJK *ijk = [CoolFlutterIJK ijkWithRegistrar:self.registrar];
  23. NSNumber *number = @([ijk id]);
  24. dict[number] = ijk;
  25. return [ijk id];
  26. }
  27. - (CoolFlutterIJK *)findIJKWithId:(int64_t)id {
  28. return dict[@(id)];
  29. }
  30. - (void)disposeWithId:(int64_t)id {
  31. CoolFlutterIJK *ijk = dict[@(id)];
  32. if (ijk) {
  33. [ijk dispose];
  34. [dict removeObjectForKey:@(id)];
  35. }
  36. }
  37. - (void)disposeAll {
  38. NSArray<NSNumber *> *keys = dict.allKeys;
  39. for (NSNumber *key in keys) {
  40. CoolFlutterIJK *ijk = dict[key];
  41. [dict removeObjectForKey:key];
  42. [ijk dispose];
  43. }
  44. }
  45. @end