Skip to content
This repository was archived by the owner on May 14, 2024. It is now read-only.

Commit 94a9749

Browse files
Changed delegates from unsafe_unretained to weak
1 parent 26748e0 commit 94a9749

7 files changed

+33
-25
lines changed

SocketIO.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ typedef enum {
6767
NSString *_endpoint;
6868
NSDictionary *_params;
6969

70-
__unsafe_unretained id<SocketIODelegate> _delegate;
70+
__weak id<SocketIODelegate> _delegate;
7171

7272
NSObject <SocketIOTransport> *_transport;
7373

@@ -100,7 +100,7 @@ typedef enum {
100100
@property (nonatomic, readonly) NSTimeInterval heartbeatTimeout;
101101
@property (nonatomic) BOOL useSecure;
102102
@property (nonatomic, readonly) BOOL isConnected, isConnecting;
103-
@property (nonatomic, unsafe_unretained) id<SocketIODelegate> delegate;
103+
@property (nonatomic, weak) id<SocketIODelegate> delegate;
104104
@property (nonatomic) BOOL returnAllDataFromAck;
105105

106106
- (id) initWithDelegate:(id<SocketIODelegate>)delegate;

SocketIO.m

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ - (void) send:(SocketIOPacket *)packet
324324
DEBUGLOG(@"send() >>> %@", req);
325325
[_transport send:req];
326326

327-
if ([_delegate respondsToSelector:@selector(socketIO:didSendMessage:)]) {
327+
if (_delegate && [_delegate respondsToSelector:@selector(socketIO:didSendMessage:)]) {
328328
[_delegate socketIO:self didSendMessage:packet];
329329
}
330330
}
@@ -361,7 +361,7 @@ - (void) onConnect:(SocketIOPacket *)packet
361361

362362
_isConnecting = NO;
363363

364-
if ([_delegate respondsToSelector:@selector(socketIODidConnect:)]) {
364+
if (_delegate && [_delegate respondsToSelector:@selector(socketIODidConnect:)]) {
365365
[_delegate socketIODidConnect:self];
366366
}
367367

@@ -517,7 +517,7 @@ - (void) onData:(NSString *)data
517517
case 3: {
518518
DEBUGLOG(@"message");
519519
if (packet.data && ![packet.data isEqualToString:@""]) {
520-
if ([_delegate respondsToSelector:@selector(socketIO:didReceiveMessage:)]) {
520+
if (_delegate && [_delegate respondsToSelector:@selector(socketIO:didReceiveMessage:)]) {
521521
[_delegate socketIO:self didReceiveMessage:packet];
522522
}
523523
}
@@ -526,7 +526,7 @@ - (void) onData:(NSString *)data
526526
case 4: {
527527
DEBUGLOG(@"json");
528528
if (packet.data && ![packet.data isEqualToString:@""]) {
529-
if ([_delegate respondsToSelector:@selector(socketIO:didReceiveJSON:)]) {
529+
if (_delegate && [_delegate respondsToSelector:@selector(socketIO:didReceiveJSON:)]) {
530530
[_delegate socketIO:self didReceiveJSON:packet];
531531
}
532532
}
@@ -538,7 +538,7 @@ - (void) onData:(NSString *)data
538538
NSDictionary *json = [packet dataAsJSON];
539539
packet.name = [json objectForKey:@"name"];
540540
packet.args = [json objectForKey:@"args"];
541-
if ([_delegate respondsToSelector:@selector(socketIO:didReceiveEvent:)]) {
541+
if (_delegate && [_delegate respondsToSelector:@selector(socketIO:didReceiveEvent:)]) {
542542
[_delegate socketIO:self didReceiveEvent:packet];
543543
}
544544
}
@@ -623,15 +623,15 @@ - (void) onDisconnect:(NSError *)error
623623
}
624624

625625
if ((wasConnected || wasConnecting)) {
626-
if ([_delegate respondsToSelector:@selector(socketIODidDisconnect:disconnectedWithError:)]) {
626+
if (_delegate && [_delegate respondsToSelector:@selector(socketIODidDisconnect:disconnectedWithError:)]) {
627627
[_delegate socketIODidDisconnect:self disconnectedWithError:error];
628628
}
629629
}
630630
}
631631

632632
- (void) onError:(NSError *)error
633633
{
634-
if ([_delegate respondsToSelector:@selector(socketIO:onError:)]) {
634+
if (_delegate && [_delegate respondsToSelector:@selector(socketIO:onError:)]) {
635635
[_delegate socketIO:self onError:error];
636636
}
637637
}
@@ -675,7 +675,7 @@ - (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)er
675675
_isConnected = NO;
676676
_isConnecting = NO;
677677

678-
if ([_delegate respondsToSelector:@selector(socketIO:onError:)]) {
678+
if (_delegate && [_delegate respondsToSelector:@selector(socketIO:onError:)]) {
679679
NSMutableDictionary *errorInfo = [NSDictionary dictionaryWithObject:error forKey:NSLocalizedDescriptionKey];
680680

681681
NSError *err = [NSError errorWithDomain:SocketIOError
@@ -685,7 +685,7 @@ - (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)er
685685
[_delegate socketIO:self onError:err];
686686
}
687687
// TODO: deprecated - to be removed
688-
else if ([_delegate respondsToSelector:@selector(socketIOHandshakeFailed:)]) {
688+
else if (_delegate && [_delegate respondsToSelector:@selector(socketIOHandshakeFailed:)]) {
689689
#pragma clang diagnostic push
690690
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
691691
[_delegate socketIOHandshakeFailed:self];
@@ -765,11 +765,11 @@ - (void) connectionDidFinishLoading:(NSURLConnection *)connection
765765
userInfo:nil];
766766
}
767767

768-
if ([_delegate respondsToSelector:@selector(socketIO:onError:)]) {
768+
if (_delegate && [_delegate respondsToSelector:@selector(socketIO:onError:)]) {
769769
[_delegate socketIO:self onError:error];
770770
}
771771
// TODO: deprecated - to be removed
772-
else if ([_delegate respondsToSelector:@selector(socketIO:failedToConnectWithError:)]) {
772+
else if (_delegate && [_delegate respondsToSelector:@selector(socketIO:failedToConnectWithError:)]) {
773773
#pragma clang diagnostic push
774774
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
775775
[_delegate socketIO:self failedToConnectWithError:error];

SocketIOTransport.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,6 @@
4545
- (BOOL) isReady;
4646
- (void) send:(NSString *)request;
4747

48-
@property (nonatomic, unsafe_unretained) id <SocketIOTransportDelegate> delegate;
48+
@property (nonatomic, weak) id <SocketIOTransportDelegate> delegate;
4949

5050
@end

SocketIOTransportWebsocket.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,6 @@
3131
SRWebSocket *_webSocket;
3232
}
3333

34-
@property (nonatomic, unsafe_unretained) id <SocketIOTransportDelegate> delegate;
34+
@property (nonatomic, weak) id <SocketIOTransportDelegate> delegate;
3535

3636
@end

SocketIOTransportWebsocket.m

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,9 @@ - (void) send:(NSString*)request
9999

100100
- (void) webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message
101101
{
102-
[delegate onData:message];
102+
if(delegate && [delegate respondsToSelector:@selector(onData:)]) {
103+
[delegate onData:message];
104+
}
103105
}
104106

105107
- (void) webSocketDidOpen:(SRWebSocket *)webSocket
@@ -111,7 +113,9 @@ - (void) webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error
111113
{
112114
DEBUGLOG(@"Socket failed with error ... %@", [error localizedDescription]);
113115
// Assuming this resulted in a disconnect
114-
[delegate onDisconnect:error];
116+
if(delegate && [delegate respondsToSelector:@selector(onDisconnect:)]) {
117+
[delegate onDisconnect:error];
118+
}
115119
}
116120

117121
- (void) webSocket:(SRWebSocket *)webSocket
@@ -120,9 +124,11 @@ - (void) webSocket:(SRWebSocket *)webSocket
120124
wasClean:(BOOL)wasClean
121125
{
122126
DEBUGLOG(@"Socket closed. %@", reason);
123-
[delegate onDisconnect:[NSError errorWithDomain:SocketIOError
124-
code:SocketIOWebSocketClosed
125-
userInfo:nil]];
127+
if(delegate && [delegate respondsToSelector:@selector(onDisconnect:)]) {
128+
[delegate onDisconnect:[NSError errorWithDomain:SocketIOError
129+
code:SocketIOWebSocketClosed
130+
userInfo:nil]];
131+
}
126132
}
127133

128134
@end

SocketIOTransportXHR.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,6 @@
3232
NSMutableDictionary *_polls;
3333
}
3434

35-
@property (nonatomic, unsafe_unretained) id <SocketIOTransportDelegate> delegate;
35+
@property (nonatomic, weak) id <SocketIOTransportDelegate> delegate;
3636

3737
@end

SocketIOTransportXHR.m

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ - (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)er
194194
[errorInfo setValue:[error localizedDescription] forKey:@"reason"];
195195
[errorInfo setValue:data forKey:@"data"];
196196

197-
if ([delegate respondsToSelector:@selector(onError:)]) {
197+
if (delegate && [delegate respondsToSelector:@selector(onError:)]) {
198198
[delegate onError:[NSError errorWithDomain:SocketIOError
199199
code:SocketIODataCouldNotBeSend
200200
userInfo:errorInfo]];
@@ -240,9 +240,11 @@ - (void) connectionDidFinishLoading:(NSURLConnection *)connection
240240

241241
if (![message isEqualToString:@"1"]) {
242242
NSArray *messages = [self packetsFromPayload:message];
243-
[messages enumerateObjectsUsingBlock:^(NSString *message, NSUInteger idx, BOOL *stop) {
244-
[delegate onData:message];
245-
}];
243+
if(delegate && [delegate respondsToSelector:@selector(onData:)]) {
244+
[messages enumerateObjectsUsingBlock:^(NSString *message, NSUInteger idx, BOOL *stop) {
245+
[delegate onData:message];
246+
}];
247+
}
246248
}
247249

248250
// remove current connection from pool

0 commit comments

Comments
 (0)