Fix warnings: Block implicitly retains 'self'

This commit is contained in:
Doug
2021-08-09 15:45:59 +01:00
parent ea9ed8aabb
commit 832df3badc
@@ -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];
}
}
});