From 98212767632ad46398ad717a1f5b47aa884a8890 Mon Sep 17 00:00:00 2001 From: Doug Date: Mon, 9 Aug 2021 15:45:59 +0100 Subject: [PATCH 1/6] Fix warnings: Block implicitly retains 'self' --- .../Contacts/DataSources/ContactsDataSource.m | 68 ++++++++++--------- 1 file changed, 37 insertions(+), 31 deletions(-) diff --git a/Riot/Modules/Contacts/DataSources/ContactsDataSource.m b/Riot/Modules/Contacts/DataSources/ContactsDataSource.m index 52a68f130..b2aa27db5 100644 --- a/Riot/Modules/Contacts/DataSources/ContactsDataSource.m +++ b/Riot/Modules/Contacts/DataSources/ContactsDataSource.m @@ -196,21 +196,24 @@ [hsUserDirectoryOperation cancel]; hsUserDirectoryOperation = nil; } + + MXWeakify(self); hsUserDirectoryOperation = [self.mxSession.matrixRestClient searchUsers:searchText limit:50 success:^(MXUserSearchResponse *userSearchResponse) { - - filteredMatrixContacts = [NSMutableArray arrayWithCapacity:userSearchResponse.results.count]; + MXStrongifyAndReturnIfNil(self); + + self->filteredMatrixContacts = [NSMutableArray arrayWithCapacity:userSearchResponse.results.count]; // Keep the response order as the hs ordered users by relevance for (MXUser *mxUser in userSearchResponse.results) { MXKContact *contact = [[MXKContact alloc] initMatrixContactWithDisplayName:mxUser.displayname andMatrixID:mxUser.userId]; - [filteredMatrixContacts addObject:contact]; + [self->filteredMatrixContacts addObject:contact]; } - hsUserDirectoryOperation = nil; + self->hsUserDirectoryOperation = nil; - _userDirectoryState = userSearchResponse.limited ? ContactsDataSourceUserDirectoryStateLoadedButLimited : ContactsDataSourceUserDirectoryStateLoaded; + self->_userDirectoryState = userSearchResponse.limited ? ContactsDataSourceUserDirectoryStateLoadedButLimited : ContactsDataSourceUserDirectoryStateLoaded; // And inform the delegate about the update [self.delegate dataSource:self didCellChange:nil]; @@ -230,28 +233,31 @@ // Disclose the sections shrinkedSectionsBitMask = 0; } + + MXWeakify(self); dispatch_async(searchProcessingQueue, ^{ + MXStrongifyAndReturnIfNil(self); // Reset the current arrays if it is required if (!searchText.length) { - searchProcessingLocalContacts = nil; - searchProcessingMatrixContacts = nil; + self->searchProcessingLocalContacts = nil; + self->searchProcessingMatrixContacts = nil; } else if (unfilteredLocalContacts) { - searchProcessingLocalContacts = unfilteredLocalContacts; - searchProcessingMatrixContacts = unfilteredMatrixContacts; + self->searchProcessingLocalContacts = unfilteredLocalContacts; + self->searchProcessingMatrixContacts = unfilteredMatrixContacts; } - for (NSUInteger index = 0; index < searchProcessingLocalContacts.count;) + for (NSUInteger index = 0; index < self->searchProcessingLocalContacts.count;) { - MXKContact* contact = searchProcessingLocalContacts[index]; + MXKContact* contact = self->searchProcessingLocalContacts[index]; if (![contact hasPrefix:searchText]) { - [searchProcessingLocalContacts removeObjectAtIndex:index]; + [self->searchProcessingLocalContacts removeObjectAtIndex:index]; } else { @@ -260,13 +266,13 @@ } } - for (NSUInteger index = 0; index < searchProcessingMatrixContacts.count;) + for (NSUInteger index = 0; index < self->searchProcessingMatrixContacts.count;) { - MXKContact* contact = searchProcessingMatrixContacts[index]; + MXKContact* contact = self->searchProcessingMatrixContacts[index]; if (![contact hasPrefix:searchText]) { - [searchProcessingMatrixContacts removeObjectAtIndex:index]; + [self->searchProcessingMatrixContacts removeObjectAtIndex:index]; } else { @@ -276,42 +282,42 @@ } // Sort the refreshed list of the invitable contacts - [[MXKContactManager sharedManager] sortAlphabeticallyContacts:searchProcessingLocalContacts]; - [[MXKContactManager sharedManager] sortContactsByLastActiveInformation:searchProcessingMatrixContacts]; + [[MXKContactManager sharedManager] sortAlphabeticallyContacts:self->searchProcessingLocalContacts]; + [[MXKContactManager sharedManager] sortContactsByLastActiveInformation:self->searchProcessingMatrixContacts]; - searchProcessingText = searchText; + self->searchProcessingText = searchText; dispatch_sync(dispatch_get_main_queue(), ^{ // Sanity check: check whether self has been destroyed. - if (!searchProcessingQueue) + if (!self->searchProcessingQueue) { return; } // Render the search result only if there is no other search in progress. - searchProcessingCount --; + self->searchProcessingCount --; - if (!searchProcessingCount) + if (!self->searchProcessingCount) { - if (!forceSearchResultRefresh) + if (!self->forceSearchResultRefresh) { // Update the filtered contacts. - currentSearchText = searchProcessingText; - filteredLocalContacts = searchProcessingLocalContacts; + self->currentSearchText = self->searchProcessingText; + self->filteredLocalContacts = self->searchProcessingLocalContacts; if (!hsUserDirectory) { - filteredMatrixContacts = searchProcessingMatrixContacts; - _userDirectoryState = ContactsDataSourceUserDirectoryStateOfflineLoaded; + self->filteredMatrixContacts = self->searchProcessingMatrixContacts; + self->_userDirectoryState = ContactsDataSourceUserDirectoryStateOfflineLoaded; } if (!self.forceMatrixIdInDisplayName) { - [isMultiUseNameByDisplayName removeAllObjects]; - for (MXKContact* contact in filteredMatrixContacts) + [self->isMultiUseNameByDisplayName removeAllObjects]; + for (MXKContact* contact in self->filteredMatrixContacts) { - isMultiUseNameByDisplayName[contact.displayName] = (isMultiUseNameByDisplayName[contact.displayName] ? @(YES) : @(NO)); + self->isMultiUseNameByDisplayName[contact.displayName] = (self->isMultiUseNameByDisplayName[contact.displayName] ? @(YES) : @(NO)); } } @@ -321,8 +327,8 @@ else { // Launch a new search - forceSearchResultRefresh = NO; - [self searchWithPattern:searchProcessingText forceReset:YES]; + self->forceSearchResultRefresh = NO; + [self searchWithPattern:self->searchProcessingText forceReset:YES]; } } }); From e40978da4497d85c5550d1c4f1bd79da71506135 Mon Sep 17 00:00:00 2001 From: Doug Date: Mon, 9 Aug 2021 15:49:11 +0100 Subject: [PATCH 2/6] Updated CHANGES.rst --- CHANGES.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.rst b/CHANGES.rst index 2f2bf111c..7dccb1312 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -29,6 +29,7 @@ Changes to be released in next version Others * Docs: Add reference to AppIdentifiers.xcconfig in INSTALL.md + * Contacts: Fix implicitly retained self warnings. Changes in 1.4.9 (2021-08-03) ================================================= From 588a10b9e79c25ea1a13c7e93b4aa7890c3508b1 Mon Sep 17 00:00:00 2001 From: Doug Date: Mon, 9 Aug 2021 15:59:46 +0100 Subject: [PATCH 3/6] Add missing Weakify/Strongify. --- Riot/Modules/Contacts/DataSources/ContactsDataSource.m | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Riot/Modules/Contacts/DataSources/ContactsDataSource.m b/Riot/Modules/Contacts/DataSources/ContactsDataSource.m index b2aa27db5..d52a46b1a 100644 --- a/Riot/Modules/Contacts/DataSources/ContactsDataSource.m +++ b/Riot/Modules/Contacts/DataSources/ContactsDataSource.m @@ -200,6 +200,7 @@ MXWeakify(self); hsUserDirectoryOperation = [self.mxSession.matrixRestClient searchUsers:searchText limit:50 success:^(MXUserSearchResponse *userSearchResponse) { + MXStrongifyAndReturnIfNil(self); self->filteredMatrixContacts = [NSMutableArray arrayWithCapacity:userSearchResponse.results.count]; @@ -237,6 +238,7 @@ MXWeakify(self); dispatch_async(searchProcessingQueue, ^{ + MXStrongifyAndReturnIfNil(self); // Reset the current arrays if it is required @@ -287,13 +289,12 @@ self->searchProcessingText = searchText; + MXWeakify(self); + dispatch_sync(dispatch_get_main_queue(), ^{ // Sanity check: check whether self has been destroyed. - if (!self->searchProcessingQueue) - { - return; - } + MXStrongifyAndReturnIfNil(self); // Render the search result only if there is no other search in progress. self->searchProcessingCount --; From 6a7b99efd774b718b4a9f1f3931571731fc5e027 Mon Sep 17 00:00:00 2001 From: Doug Date: Tue, 10 Aug 2021 09:41:35 +0100 Subject: [PATCH 4/6] Revert "Updated CHANGES.rst" This reverts commit e40978da4497d85c5550d1c4f1bd79da71506135. --- CHANGES.rst | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGES.rst b/CHANGES.rst index 7dccb1312..2f2bf111c 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -29,7 +29,6 @@ Changes to be released in next version Others * Docs: Add reference to AppIdentifiers.xcconfig in INSTALL.md - * Contacts: Fix implicitly retained self warnings. Changes in 1.4.9 (2021-08-03) ================================================= From 4293ad402200e17945d5d840df3f24f72fde31e6 Mon Sep 17 00:00:00 2001 From: Doug Date: Tue, 10 Aug 2021 09:44:42 +0100 Subject: [PATCH 5/6] Add changelog entry. --- changelog.d/pr_4681.misc | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/pr_4681.misc diff --git a/changelog.d/pr_4681.misc b/changelog.d/pr_4681.misc new file mode 100644 index 000000000..af1064dc1 --- /dev/null +++ b/changelog.d/pr_4681.misc @@ -0,0 +1 @@ +Contacts: Fix implicitly retained self warnings. \ No newline at end of file From bb237cc554c8ae893e06de5e4d65e85a0e21cc67 Mon Sep 17 00:00:00 2001 From: Doug <6060466+pixlwave@users.noreply.github.com> Date: Tue, 10 Aug 2021 10:27:12 +0100 Subject: [PATCH 6/6] Rename pr_4681.misc to 4677.misc --- changelog.d/4677.misc | 1 + changelog.d/pr_4681.misc | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 changelog.d/4677.misc delete mode 100644 changelog.d/pr_4681.misc diff --git a/changelog.d/4677.misc b/changelog.d/4677.misc new file mode 100644 index 000000000..69490e109 --- /dev/null +++ b/changelog.d/4677.misc @@ -0,0 +1 @@ +Contacts: Fix implicitly retained self warnings. diff --git a/changelog.d/pr_4681.misc b/changelog.d/pr_4681.misc deleted file mode 100644 index af1064dc1..000000000 --- a/changelog.d/pr_4681.misc +++ /dev/null @@ -1 +0,0 @@ -Contacts: Fix implicitly retained self warnings. \ No newline at end of file