@@ -254,26 +254,29 @@ extension Client {
254
254
private class HandlerConverter : SubscriptionHandling {
255
255
typealias PFObjectSubclass = PFObject
256
256
257
- private let handler : ObjCCompat_SubscriptionHandling
257
+ private static var associatedObjectKey : Int = 0
258
+ private weak var handler : ObjCCompat_SubscriptionHandling ?
258
259
259
260
init ( handler: ObjCCompat_SubscriptionHandling ) {
260
261
self . handler = handler
262
+
263
+ objc_setAssociatedObject ( handler, & HandlerConverter. associatedObjectKey, self , . OBJC_ASSOCIATION_RETAIN)
261
264
}
262
265
263
266
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)
265
268
}
266
269
267
270
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)
269
272
}
270
273
271
274
private func didSubscribe( toQuery query: PFQuery , inClient client: Client ) {
272
- handler. didSubscribe ? ( query, client: client)
275
+ handler? . didSubscribe ? ( query, client: client)
273
276
}
274
277
275
278
private func didUnsubscribe( fromQuery query: PFQuery , inClient client: Client ) {
276
- handler. didUnsubscribe ? ( query, client: client)
279
+ handler? . didUnsubscribe ? ( query, client: client)
277
280
}
278
281
}
279
282
0 commit comments