4
4
5
5
#import " flutter/shell/platform/darwin/common/framework/Headers/FlutterChannels.h"
6
6
7
- FLUTTER_ASSERT_ARC
8
-
9
7
#pragma mark - Basic message channel
10
8
11
9
static NSString * const kFlutterChannelBuffersChannel = @" dev.flutter/channel-buffers" ;
@@ -53,9 +51,9 @@ + (instancetype)messageChannelWithName:(NSString*)name
53
51
+ (instancetype )messageChannelWithName : (NSString *)name
54
52
binaryMessenger : (NSObject <FlutterBinaryMessenger>*)messenger
55
53
codec : (NSObject <FlutterMessageCodec>*)codec {
56
- return [[FlutterBasicMessageChannel alloc ] initWithName: name
57
- binaryMessenger: messenger
58
- codec: codec];
54
+ return [[[ FlutterBasicMessageChannel alloc ] initWithName: name
55
+ binaryMessenger: messenger
56
+ codec: codec] autorelease ];
59
57
}
60
58
61
59
- (instancetype )initWithName : (NSString *)name
@@ -71,13 +69,21 @@ - (instancetype)initWithName:(NSString*)name
71
69
taskQueue : (NSObject <FlutterTaskQueue>*)taskQueue {
72
70
self = [super init ];
73
71
NSAssert (self, @" Super init cannot be nil" );
74
- _name = [name copy ];
75
- _messenger = messenger;
76
- _codec = codec;
77
- _taskQueue = taskQueue;
72
+ _name = [name retain ];
73
+ _messenger = [ messenger retain ] ;
74
+ _codec = [ codec retain ] ;
75
+ _taskQueue = [ taskQueue retain ] ;
78
76
return self;
79
77
}
80
78
79
+ - (void )dealloc {
80
+ [_name release ];
81
+ [_messenger release ];
82
+ [_codec release ];
83
+ [_taskQueue release ];
84
+ [super dealloc ];
85
+ }
86
+
81
87
- (void )sendMessage : (id )message {
82
88
[_messenger sendOnChannel: _name message: [_codec encode: message]];
83
89
}
@@ -102,7 +108,7 @@ - (void)setMessageHandler:(FlutterMessageHandler)handler {
102
108
return ;
103
109
}
104
110
// Grab reference to avoid retain on self.
105
- __weak NSObject <FlutterMessageCodec>* codec = _codec;
111
+ NSObject <FlutterMessageCodec>* codec = _codec;
106
112
FlutterBinaryMessageHandler messageHandler = ^(NSData * message, FlutterBinaryReply callback) {
107
113
handler ([codec decode: message], ^(id reply) {
108
114
callback ([codec encode: reply]);
@@ -122,19 +128,26 @@ - (void)resizeChannelBuffer:(NSInteger)newSize {
122
128
// //////////////////////////////////////////////////////////////////////////////
123
129
@implementation FlutterError
124
130
+ (instancetype )errorWithCode : (NSString *)code message : (NSString *)message details : (id )details {
125
- return [[FlutterError alloc ] initWithCode: code message: message details: details];
131
+ return [[[ FlutterError alloc ] initWithCode: code message: message details: details] autorelease ];
126
132
}
127
133
128
134
- (instancetype )initWithCode : (NSString *)code message : (NSString *)message details : (id )details {
129
135
NSAssert (code, @" Code cannot be nil" );
130
136
self = [super init ];
131
137
NSAssert (self, @" Super init cannot be nil" );
132
- _code = [code copy ];
133
- _message = [message copy ];
134
- _details = details;
138
+ _code = [code retain ];
139
+ _message = [message retain ];
140
+ _details = [ details retain ] ;
135
141
return self;
136
142
}
137
143
144
+ - (void )dealloc {
145
+ [_code release ];
146
+ [_message release ];
147
+ [_details release ];
148
+ [super dealloc ];
149
+ }
150
+
138
151
- (BOOL )isEqual : (id )object {
139
152
if (self == object) {
140
153
return YES ;
@@ -156,18 +169,24 @@ - (NSUInteger)hash {
156
169
// //////////////////////////////////////////////////////////////////////////////
157
170
@implementation FlutterMethodCall
158
171
+ (instancetype )methodCallWithMethodName : (NSString *)method arguments : (id )arguments {
159
- return [[FlutterMethodCall alloc ] initWithMethodName: method arguments: arguments];
172
+ return [[[ FlutterMethodCall alloc ] initWithMethodName: method arguments: arguments] autorelease ];
160
173
}
161
174
162
175
- (instancetype )initWithMethodName : (NSString *)method arguments : (id )arguments {
163
176
NSAssert (method, @" Method name cannot be nil" );
164
177
self = [super init ];
165
178
NSAssert (self, @" Super init cannot be nil" );
166
- _method = [method copy ];
167
- _arguments = arguments;
179
+ _method = [method retain ];
180
+ _arguments = [ arguments retain ] ;
168
181
return self;
169
182
}
170
183
184
+ - (void )dealloc {
185
+ [_method release ];
186
+ [_arguments release ];
187
+ [super dealloc ];
188
+ }
189
+
171
190
- (BOOL )isEqual : (id )object {
172
191
if (self == object) {
173
192
return YES ;
@@ -205,7 +224,8 @@ + (instancetype)methodChannelWithName:(NSString*)name
205
224
+ (instancetype )methodChannelWithName : (NSString *)name
206
225
binaryMessenger : (NSObject <FlutterBinaryMessenger>*)messenger
207
226
codec : (NSObject <FlutterMethodCodec>*)codec {
208
- return [[FlutterMethodChannel alloc ] initWithName: name binaryMessenger: messenger codec: codec];
227
+ return [[[FlutterMethodChannel alloc ] initWithName: name binaryMessenger: messenger
228
+ codec: codec] autorelease ];
209
229
}
210
230
211
231
- (instancetype )initWithName : (NSString *)name
@@ -220,13 +240,21 @@ - (instancetype)initWithName:(NSString*)name
220
240
taskQueue : (NSObject <FlutterTaskQueue>*)taskQueue {
221
241
self = [super init ];
222
242
NSAssert (self, @" Super init cannot be nil" );
223
- _name = [name copy ];
224
- _messenger = messenger;
225
- _codec = codec;
226
- _taskQueue = taskQueue;
243
+ _name = [name retain ];
244
+ _messenger = [ messenger retain ] ;
245
+ _codec = [ codec retain ] ;
246
+ _taskQueue = [ taskQueue retain ] ;
227
247
return self;
228
248
}
229
249
250
+ - (void )dealloc {
251
+ [_name release ];
252
+ [_messenger release ];
253
+ [_codec release ];
254
+ [_taskQueue release ];
255
+ [super dealloc ];
256
+ }
257
+
230
258
- (void )invokeMethod : (NSString *)method arguments : (id )arguments {
231
259
FlutterMethodCall* methodCall = [FlutterMethodCall methodCallWithMethodName: method
232
260
arguments: arguments];
@@ -257,7 +285,7 @@ - (void)setMethodCallHandler:(FlutterMethodCallHandler)handler {
257
285
return ;
258
286
}
259
287
// Make sure the block captures the codec, not self.
260
- __weak NSObject <FlutterMethodCodec>* codec = _codec;
288
+ NSObject <FlutterMethodCodec>* codec = _codec;
261
289
FlutterBinaryMessageHandler messageHandler = ^(NSData * message, FlutterBinaryReply callback) {
262
290
FlutterMethodCall* call = [codec decodeMethodCall: message];
263
291
handler (call, ^(id result) {
@@ -300,7 +328,8 @@ + (instancetype)eventChannelWithName:(NSString*)name
300
328
+ (instancetype )eventChannelWithName : (NSString *)name
301
329
binaryMessenger : (NSObject <FlutterBinaryMessenger>*)messenger
302
330
codec : (NSObject <FlutterMethodCodec>*)codec {
303
- return [[FlutterEventChannel alloc ] initWithName: name binaryMessenger: messenger codec: codec];
331
+ return [[[FlutterEventChannel alloc ] initWithName: name binaryMessenger: messenger
332
+ codec: codec] autorelease ];
304
333
}
305
334
306
335
- (instancetype )initWithName : (NSString *)name
@@ -315,13 +344,21 @@ - (instancetype)initWithName:(NSString*)name
315
344
taskQueue : (NSObject <FlutterTaskQueue>* _Nullable)taskQueue {
316
345
self = [super init ];
317
346
NSAssert (self, @" Super init cannot be nil" );
318
- _name = [name copy ];
319
- _messenger = messenger;
320
- _codec = codec;
321
- _taskQueue = taskQueue;
347
+ _name = [name retain ];
348
+ _messenger = [ messenger retain ] ;
349
+ _codec = [ codec retain ] ;
350
+ _taskQueue = [ taskQueue retain ] ;
322
351
return self;
323
352
}
324
353
354
+ - (void )dealloc {
355
+ [_name release ];
356
+ [_codec release ];
357
+ [_messenger release ];
358
+ [_taskQueue release ];
359
+ [super dealloc ];
360
+ }
361
+
325
362
static FlutterBinaryMessengerConnection SetStreamHandlerMessageHandlerOnChannel (
326
363
NSObject <FlutterStreamHandler>* handler,
327
364
NSString * name,
0 commit comments