Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 425aea4

Browse files
author
Chris Yang
committed
fix
1 parent 206ef0f commit 425aea4

File tree

5 files changed

+49
-115
lines changed

5 files changed

+49
-115
lines changed

shell/platform/darwin/common/BUILD.gn

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ config("framework_relative_headers") {
3838

3939
# Framework code shared between iOS and macOS.
4040
source_set("framework_shared") {
41-
cflags_objc = flutter_cflags_objc
42-
cflags_objcc = flutter_cflags_objcc
41+
cflags_objc = flutter_cflags_objc_arc
42+
cflags_objcc = flutter_cflags_objcc_arc
4343

4444
sources = [
4545
"framework/Source/FlutterChannels.mm",

shell/platform/darwin/common/framework/Headers/FlutterCodecs.h

+6-6
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ FLUTTER_DARWIN_EXPORT
230230
/**
231231
* The method name.
232232
*/
233-
@property(readonly, nonatomic) NSString* method;
233+
@property(readonly, nonatomic, copy) NSString* method;
234234

235235
/**
236236
* The arguments.
@@ -257,12 +257,12 @@ FLUTTER_DARWIN_EXPORT
257257
/**
258258
The error code.
259259
*/
260-
@property(readonly, nonatomic) NSString* code;
260+
@property(readonly, nonatomic, copy) NSString* code;
261261

262262
/**
263263
The error message.
264264
*/
265-
@property(readonly, nonatomic, nullable) NSString* message;
265+
@property(readonly, nonatomic, nullable, copy) NSString* message;
266266

267267
/**
268268
The error details.
@@ -344,17 +344,17 @@ FLUTTER_DARWIN_EXPORT
344344
/**
345345
* The type of the encoded values.
346346
*/
347-
@property(readonly, nonatomic) FlutterStandardDataType type;
347+
@property(readonly, nonatomic, assign) FlutterStandardDataType type;
348348

349349
/**
350350
* The number of value items encoded.
351351
*/
352-
@property(readonly, nonatomic) UInt32 elementCount;
352+
@property(readonly, nonatomic, assign) UInt32 elementCount;
353353

354354
/**
355355
* The number of bytes used by the encoding of a single value item.
356356
*/
357-
@property(readonly, nonatomic) UInt8 elementSize;
357+
@property(readonly, nonatomic, assign) UInt8 elementSize;
358358
@end
359359

360360
/**

shell/platform/darwin/common/framework/Source/FlutterChannels.mm

+26-65
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@ + (instancetype)messageChannelWithName:(NSString*)name
5151
+ (instancetype)messageChannelWithName:(NSString*)name
5252
binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger
5353
codec:(NSObject<FlutterMessageCodec>*)codec {
54-
return [[[FlutterBasicMessageChannel alloc] initWithName:name
55-
binaryMessenger:messenger
56-
codec:codec] autorelease];
54+
return [[FlutterBasicMessageChannel alloc] initWithName:name
55+
binaryMessenger:messenger
56+
codec:codec];
5757
}
5858

5959
- (instancetype)initWithName:(NSString*)name
@@ -69,21 +69,13 @@ - (instancetype)initWithName:(NSString*)name
6969
taskQueue:(NSObject<FlutterTaskQueue>*)taskQueue {
7070
self = [super init];
7171
NSAssert(self, @"Super init cannot be nil");
72-
_name = [name retain];
73-
_messenger = [messenger retain];
74-
_codec = [codec retain];
75-
_taskQueue = [taskQueue retain];
72+
_name = name;
73+
_messenger = messenger;
74+
_codec = codec;
75+
_taskQueue = taskQueue;
7676
return self;
7777
}
7878

79-
- (void)dealloc {
80-
[_name release];
81-
[_messenger release];
82-
[_codec release];
83-
[_taskQueue release];
84-
[super dealloc];
85-
}
86-
8779
- (void)sendMessage:(id)message {
8880
[_messenger sendOnChannel:_name message:[_codec encode:message]];
8981
}
@@ -108,7 +100,7 @@ - (void)setMessageHandler:(FlutterMessageHandler)handler {
108100
return;
109101
}
110102
// Grab reference to avoid retain on self.
111-
NSObject<FlutterMessageCodec>* codec = _codec;
103+
__weak NSObject<FlutterMessageCodec>* codec = _codec;
112104
FlutterBinaryMessageHandler messageHandler = ^(NSData* message, FlutterBinaryReply callback) {
113105
handler([codec decode:message], ^(id reply) {
114106
callback([codec encode:reply]);
@@ -128,26 +120,19 @@ - (void)resizeChannelBuffer:(NSInteger)newSize {
128120
////////////////////////////////////////////////////////////////////////////////
129121
@implementation FlutterError
130122
+ (instancetype)errorWithCode:(NSString*)code message:(NSString*)message details:(id)details {
131-
return [[[FlutterError alloc] initWithCode:code message:message details:details] autorelease];
123+
return [[FlutterError alloc] initWithCode:code message:message details:details];
132124
}
133125

134126
- (instancetype)initWithCode:(NSString*)code message:(NSString*)message details:(id)details {
135127
NSAssert(code, @"Code cannot be nil");
136128
self = [super init];
137129
NSAssert(self, @"Super init cannot be nil");
138-
_code = [code retain];
139-
_message = [message retain];
140-
_details = [details retain];
130+
_code = code;
131+
_message = message;
132+
_details = details;
141133
return self;
142134
}
143135

144-
- (void)dealloc {
145-
[_code release];
146-
[_message release];
147-
[_details release];
148-
[super dealloc];
149-
}
150-
151136
- (BOOL)isEqual:(id)object {
152137
if (self == object) {
153138
return YES;
@@ -169,24 +154,18 @@ - (NSUInteger)hash {
169154
////////////////////////////////////////////////////////////////////////////////
170155
@implementation FlutterMethodCall
171156
+ (instancetype)methodCallWithMethodName:(NSString*)method arguments:(id)arguments {
172-
return [[[FlutterMethodCall alloc] initWithMethodName:method arguments:arguments] autorelease];
157+
return [[FlutterMethodCall alloc] initWithMethodName:method arguments:arguments];
173158
}
174159

175160
- (instancetype)initWithMethodName:(NSString*)method arguments:(id)arguments {
176161
NSAssert(method, @"Method name cannot be nil");
177162
self = [super init];
178163
NSAssert(self, @"Super init cannot be nil");
179-
_method = [method retain];
180-
_arguments = [arguments retain];
164+
_method = method;
165+
_arguments = arguments;
181166
return self;
182167
}
183168

184-
- (void)dealloc {
185-
[_method release];
186-
[_arguments release];
187-
[super dealloc];
188-
}
189-
190169
- (BOOL)isEqual:(id)object {
191170
if (self == object) {
192171
return YES;
@@ -224,8 +203,7 @@ + (instancetype)methodChannelWithName:(NSString*)name
224203
+ (instancetype)methodChannelWithName:(NSString*)name
225204
binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger
226205
codec:(NSObject<FlutterMethodCodec>*)codec {
227-
return [[[FlutterMethodChannel alloc] initWithName:name binaryMessenger:messenger
228-
codec:codec] autorelease];
206+
return [[FlutterMethodChannel alloc] initWithName:name binaryMessenger:messenger codec:codec];
229207
}
230208

231209
- (instancetype)initWithName:(NSString*)name
@@ -240,21 +218,13 @@ - (instancetype)initWithName:(NSString*)name
240218
taskQueue:(NSObject<FlutterTaskQueue>*)taskQueue {
241219
self = [super init];
242220
NSAssert(self, @"Super init cannot be nil");
243-
_name = [name retain];
244-
_messenger = [messenger retain];
245-
_codec = [codec retain];
246-
_taskQueue = [taskQueue retain];
221+
_name = name;
222+
_messenger = messenger;
223+
_codec = codec;
224+
_taskQueue = taskQueue;
247225
return self;
248226
}
249227

250-
- (void)dealloc {
251-
[_name release];
252-
[_messenger release];
253-
[_codec release];
254-
[_taskQueue release];
255-
[super dealloc];
256-
}
257-
258228
- (void)invokeMethod:(NSString*)method arguments:(id)arguments {
259229
FlutterMethodCall* methodCall = [FlutterMethodCall methodCallWithMethodName:method
260230
arguments:arguments];
@@ -285,7 +255,7 @@ - (void)setMethodCallHandler:(FlutterMethodCallHandler)handler {
285255
return;
286256
}
287257
// Make sure the block captures the codec, not self.
288-
NSObject<FlutterMethodCodec>* codec = _codec;
258+
__weak NSObject<FlutterMethodCodec>* codec = _codec;
289259
FlutterBinaryMessageHandler messageHandler = ^(NSData* message, FlutterBinaryReply callback) {
290260
FlutterMethodCall* call = [codec decodeMethodCall:message];
291261
handler(call, ^(id result) {
@@ -328,8 +298,7 @@ + (instancetype)eventChannelWithName:(NSString*)name
328298
+ (instancetype)eventChannelWithName:(NSString*)name
329299
binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger
330300
codec:(NSObject<FlutterMethodCodec>*)codec {
331-
return [[[FlutterEventChannel alloc] initWithName:name binaryMessenger:messenger
332-
codec:codec] autorelease];
301+
return [[FlutterEventChannel alloc] initWithName:name binaryMessenger:messenger codec:codec];
333302
}
334303

335304
- (instancetype)initWithName:(NSString*)name
@@ -344,21 +313,13 @@ - (instancetype)initWithName:(NSString*)name
344313
taskQueue:(NSObject<FlutterTaskQueue>* _Nullable)taskQueue {
345314
self = [super init];
346315
NSAssert(self, @"Super init cannot be nil");
347-
_name = [name retain];
348-
_messenger = [messenger retain];
349-
_codec = [codec retain];
350-
_taskQueue = [taskQueue retain];
316+
_name = name;
317+
_messenger = messenger;
318+
_codec = codec;
319+
_taskQueue = taskQueue;
351320
return self;
352321
}
353322

354-
- (void)dealloc {
355-
[_name release];
356-
[_codec release];
357-
[_messenger release];
358-
[_taskQueue release];
359-
[super dealloc];
360-
}
361-
362323
static FlutterBinaryMessengerConnection SetStreamHandlerMessageHandlerOnChannel(
363324
NSObject<FlutterStreamHandler>* handler,
364325
NSString* name,

shell/platform/darwin/common/framework/Source/FlutterCodecs.mm

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ - (NSString*)decode:(NSData*)message {
4848
if (message == nil) {
4949
return nil;
5050
}
51-
return [[[NSString alloc] initWithData:message encoding:NSUTF8StringEncoding] autorelease];
51+
return [[NSString alloc] initWithData:message encoding:NSUTF8StringEncoding];
5252
}
5353
@end
5454

0 commit comments

Comments
 (0)