change to hashtable

This commit is contained in:
Pfeil, Scott Robert 2020-06-02 14:44:54 -04:00
parent 9020d6636b
commit b95cb758c8
4 changed files with 10 additions and 15 deletions

View File

@ -26,7 +26,7 @@
@property (nullable, weak, nonatomic) UINavigationController *navigationController;
/// A list of possible delegates looking for information.
@property (nonnull, strong, nonatomic) NSPointerArray <MVMCorePresentationDelegateProtocol>*delegates;
@property (nonnull, strong, nonatomic) NSHashTable <MVMCorePresentationDelegateProtocol>*delegates;
// Will navigate appropriately based on the load style
- (void)navigateWithLoadObject:(nullable MVMCoreLoadObject *)loadObject viewController:(nonnull UIViewController *)viewController delegate:(nullable NSObject<MVMCorePresentationDelegateProtocol>*)delegate completionHandler:(nullable void (^)(void))completionBlock;

View File

@ -48,7 +48,7 @@
self.presentationQueue = [[NSOperationQueue alloc] init];
self.presentationQueue.maxConcurrentOperationCount = 1;
self.delegates = (NSPointerArray <MVMCorePresentationDelegateProtocol>*)[NSPointerArray weakObjectsPointerArray];
self.delegates = (NSHashTable <MVMCorePresentationDelegateProtocol>*)[NSHashTable weakObjectsHashTable];
}
return self;
}
@ -56,20 +56,15 @@
#pragma mark - Delegate Handling
- (void)addDelegate:(nonnull id <MVMCorePresentationDelegateProtocol>)delegate {
[self.delegates addPointer:(__bridge void *)(delegate)];
[self.delegates addObject:delegate];
}
- (void)removeDelegate:(nullable id <MVMCorePresentationDelegateProtocol>)delegate {
NSUInteger index = NSNotFound;
for (NSUInteger i = 0; i < self.delegates.count; i++) {
if (delegate == [self.delegates pointerAtIndex:i]) {
index = i;
break;
for (id currentDelegate in [self.delegates allObjects]) {
if (currentDelegate == delegate) {
[self.delegates removeObject:delegate];
}
}
if (index != NSNotFound) {
[self.delegates removePointerAtIndex:index];
}
}
#pragma mark - Navigation Helpers

View File

@ -237,7 +237,7 @@
if (self.delegate && [self.delegate respondsToSelector:@selector(navigationController:willDisplayViewController:)]) {
[self.delegate navigationController:navigationController willDisplayViewController:viewController];
}
for (NSObject <MVMCorePresentationDelegateProtocol>*delegate in [MVMCoreNavigationHandler sharedNavigationHandler].delegates) {
for (NSObject <MVMCorePresentationDelegateProtocol>*delegate in [MVMCoreNavigationHandler sharedNavigationHandler].delegates.allObjects) {
if (delegate && [delegate respondsToSelector:@selector(navigationController:willDisplayViewController:)]) {
[delegate navigationController:navigationController willDisplayViewController:viewController];
}
@ -249,7 +249,7 @@
if (self.delegate && [self.delegate respondsToSelector:@selector(navigationController:displayedViewController:)]) {
[self.delegate navigationController:navigationController displayedViewController:viewController];
}
for (NSObject <MVMCorePresentationDelegateProtocol>*delegate in [MVMCoreNavigationHandler sharedNavigationHandler].delegates) {
for (NSObject <MVMCorePresentationDelegateProtocol>*delegate in [MVMCoreNavigationHandler sharedNavigationHandler].delegates.allObjects) {
if (delegate && [delegate respondsToSelector:@selector(navigationController:displayedViewController:)]) {
[delegate navigationController:navigationController displayedViewController:viewController];
}

View File

@ -40,7 +40,7 @@
if (self.delegate && [self.delegate respondsToSelector:@selector(viewController:willPresentViewController:)]) {
[self.delegate viewController:self.presentingViewController willPresentViewController:self.presentedViewController];
}
for (NSObject <MVMCorePresentationDelegateProtocol>*delegate in [MVMCoreNavigationHandler sharedNavigationHandler].delegates) {
for (NSObject <MVMCorePresentationDelegateProtocol>*delegate in [MVMCoreNavigationHandler sharedNavigationHandler].delegates.allObjects) {
if (delegate && [delegate respondsToSelector:@selector(viewController:willPresentViewController:)]) {
[delegate viewController:self.presentingViewController willPresentViewController:self.presentedViewController];
}
@ -51,7 +51,7 @@
if (self.delegate && [self.delegate respondsToSelector:@selector(viewController:didPresentViewController:)]) {
[self.delegate viewController:self.presentingViewController didPresentViewController:self.presentedViewController];
}
for (NSObject <MVMCorePresentationDelegateProtocol>*delegate in [MVMCoreNavigationHandler sharedNavigationHandler].delegates) {
for (NSObject <MVMCorePresentationDelegateProtocol>*delegate in [MVMCoreNavigationHandler sharedNavigationHandler].delegates.allObjects) {
if (delegate && [delegate respondsToSelector:@selector(viewController:didPresentViewController:)]) {
[delegate viewController:self.presentingViewController didPresentViewController:self.presentedViewController];
}