From 68646c4b4d5dd10a20d9d3cb6ba630588328fc5c Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Thu, 3 Nov 2022 18:37:32 -0400 Subject: [PATCH] Fix objc associated objects not working in release builds --- Tusker/Extensions/UIScrollView+Top.swift | 8 ++++---- Tusker/Views/Toast/ToastableViewController.swift | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Tusker/Extensions/UIScrollView+Top.swift b/Tusker/Extensions/UIScrollView+Top.swift index 6b5d9304..11615287 100644 --- a/Tusker/Extensions/UIScrollView+Top.swift +++ b/Tusker/Extensions/UIScrollView+Top.swift @@ -8,12 +8,12 @@ import UIKit -private var prevScrollOffsetBeforeScrollToTopKey: Void = () +private let prevScrollOffsetBeforeScrollToTopKey = UnsafeMutableRawPointer.allocate(byteCount: 0, alignment: 0) extension UIScrollView { private var prevScrollOffsetBeforeScrollToTop: CGFloat? { get { - if let v = (objc_getAssociatedObject(self, &prevScrollOffsetBeforeScrollToTopKey) as? NSNumber)?.doubleValue { + if let v = (objc_getAssociatedObject(self, prevScrollOffsetBeforeScrollToTopKey) as? NSNumber)?.doubleValue { return CGFloat(v) } else { return nil @@ -21,9 +21,9 @@ extension UIScrollView { } set { if let newValue { - objc_setAssociatedObject(self, &prevScrollOffsetBeforeScrollToTopKey, NSNumber(value: newValue), .OBJC_ASSOCIATION_COPY_NONATOMIC) + objc_setAssociatedObject(self, prevScrollOffsetBeforeScrollToTopKey, NSNumber(value: newValue), .OBJC_ASSOCIATION_COPY_NONATOMIC) } else { - objc_setAssociatedObject(self, &prevScrollOffsetBeforeScrollToTopKey, nil, .OBJC_ASSOCIATION_COPY_NONATOMIC) + objc_setAssociatedObject(self, prevScrollOffsetBeforeScrollToTopKey, nil, .OBJC_ASSOCIATION_COPY_NONATOMIC) } } } diff --git a/Tusker/Views/Toast/ToastableViewController.swift b/Tusker/Views/Toast/ToastableViewController.swift index 2c535d59..ea25f570 100644 --- a/Tusker/Views/Toast/ToastableViewController.swift +++ b/Tusker/Views/Toast/ToastableViewController.swift @@ -16,20 +16,20 @@ protocol ToastableViewController: UIViewController { } -private var currentToastKey = "Tusker_currentToast" +private let currentToastKey = UnsafeMutableRawPointer.allocate(byteCount: 0, alignment: 0) extension ToastableViewController { private(set) var currentToast: ToastView? { get { - let holder = objc_getAssociatedObject(self, ¤tToastKey) as? WeakHolder + let holder = objc_getAssociatedObject(self, currentToastKey) as? WeakHolder return holder?.object } set { if let newValue = newValue { - objc_setAssociatedObject(self, ¤tToastKey, WeakHolder(object: newValue), .OBJC_ASSOCIATION_RETAIN) + objc_setAssociatedObject(self, currentToastKey, WeakHolder(object: newValue), .OBJC_ASSOCIATION_RETAIN) } else { - objc_setAssociatedObject(self, ¤tToastKey, nil, .OBJC_ASSOCIATION_RETAIN) + objc_setAssociatedObject(self, currentToastKey, nil, .OBJC_ASSOCIATION_RETAIN) } } }