change to hashtable
This commit is contained in:
parent
9020d6636b
commit
b95cb758c8
@ -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;
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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];
|
||||
}
|
||||
|
||||
@ -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];
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user