Skip to content
This repository was archived by the owner on Jun 13, 2023. It is now read-only.

Commit 944065d

Browse files
Merge pull request #11 from ParsePlatform/richardross.objc.weak
Properly deliver events back to objective-c
2 parents 4531b82 + 480c267 commit 944065d

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

Sources/ParseLiveQuery/ObjCCompat.swift

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -254,26 +254,29 @@ extension Client {
254254
private class HandlerConverter: SubscriptionHandling {
255255
typealias PFObjectSubclass = PFObject
256256

257-
private let handler: ObjCCompat_SubscriptionHandling
257+
private static var associatedObjectKey: Int = 0
258+
private weak var handler: ObjCCompat_SubscriptionHandling?
258259

259260
init(handler: ObjCCompat_SubscriptionHandling) {
260261
self.handler = handler
262+
263+
objc_setAssociatedObject(handler, &HandlerConverter.associatedObjectKey, self, .OBJC_ASSOCIATION_RETAIN)
261264
}
262265

263266
private func didReceive(event: Event<PFObjectSubclass>, forQuery query: PFQuery, inClient client: Client) {
264-
handler.didRecieveEvent?(query, event: ObjCCompat.Event(event: event), client: client)
267+
handler?.didRecieveEvent?(query, event: ObjCCompat.Event(event: event), client: client)
265268
}
266269

267270
private func didEncounter(error: ErrorType, forQuery query: PFQuery, inClient client: Client) {
268-
handler.didRecieveError?(query, error: error as NSError, client: client)
271+
handler?.didRecieveError?(query, error: error as NSError, client: client)
269272
}
270273

271274
private func didSubscribe(toQuery query: PFQuery, inClient client: Client) {
272-
handler.didSubscribe?(query, client: client)
275+
handler?.didSubscribe?(query, client: client)
273276
}
274277

275278
private func didUnsubscribe(fromQuery query: PFQuery, inClient client: Client) {
276-
handler.didUnsubscribe?(query, client: client)
279+
handler?.didUnsubscribe?(query, client: client)
277280
}
278281
}
279282

0 commit comments

Comments
 (0)