Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change a few delegate properties in Signup to be weak references #21064

Merged
merged 1 commit into from
Jul 18, 2023

Conversation

crazytonyli
Copy link
Contributor

Relates to #21050.

This PR changed a few delegate properties' declaration. I'll post PR comments in detail regarding those individual changes.

Regression Notes

  1. Potential unintended areas of impact
    None.

  2. What I did to test those areas of impact (or what existing automated tests I relied on)
    None.

  3. What automated tests I added (or what prevented me from doing so)
    None.

PR submission checklist:

  • I have completed the Regression Notes.
  • I have considered adding unit tests for my changes.
  • I have considered adding accessibility improvements for my changes.
  • I have considered if this change warrants user-facing release notes and have added them to RELEASE-NOTES.txt if necessary.

UI Changes testing checklist: N/A

@crazytonyli crazytonyli added this to the 22.9 milestone Jul 11, 2023
@crazytonyli crazytonyli requested review from jkmassel and mokagio July 11, 2023 23:01
@crazytonyli crazytonyli self-assigned this Jul 11, 2023
@@ -37,7 +37,7 @@ class SignupEpilogueCell: UITableViewCell {
private let passwordTopMargin: CGFloat = 16

private var cellType: EpilogueCellType?
open var delegate: SignupEpilogueCellDelegate?
open weak var delegate: SignupEpilogueCellDelegate?
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a retain cycle between the SignupEpilogueTableViewController and this SignupEpilogueCell.

open var dataSource: SignupEpilogueTableViewControllerDataSource?
open var delegate: SignupEpilogueTableViewControllerDelegate?
open weak var dataSource: SignupEpilogueTableViewControllerDataSource?
open weak var delegate: SignupEpilogueTableViewControllerDelegate?
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
if let vc = segue.destination as? SignupEpilogueTableViewController {
vc.credentials = credentials
vc.socialService = socialService
vc.dataSource = self
vc.delegate = self
}

I'm not sure if a view controller would hold strong references to segue instances, which would cause a retain cycle in our case here. But considering how this delegate and dataSource are used, they should be weak references anyways.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I jumped on this memory leak in other investigations.

@@ -12,7 +12,7 @@ class SignupUsernameViewController: UIViewController {

open var currentUsername: String?
open var displayName: String?
open var delegate: SignupUsernameViewControllerDelegate?
open weak var delegate: SignupUsernameViewControllerDelegate?
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This delegate is used in a similar way as #21064 (comment)

if let vc = segue.destination as? SignupUsernameViewController {
vc.currentUsername = updatedUsername ?? epilogueUserInfo?.username
vc.displayName = updatedDisplayName ?? epilogueUserInfo?.fullName
vc.delegate = self
// Empty Back Button
navigationItem.backBarButtonItem = UIBarButtonItem(title: String(), style: .plain, target: nil, action: nil)
}
}

@@ -4,7 +4,7 @@ import WordPressAuthenticator
class SignupUsernameTableViewController: UITableViewController, SearchTableViewCellDelegate {
open var currentUsername: String?
open var displayName: String?
open var delegate: SignupUsernameViewControllerDelegate?
open weak var delegate: SignupUsernameViewControllerDelegate?
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a retain cycle between SignupUsernameViewController and SignupUsernameTableViewController.

if let vc = segue.destination as? SignupUsernameTableViewController {
usernamesTableViewController = vc
vc.delegate = self
vc.displayName = displayName
vc.currentUsername = currentUsername
}

@wpmobilebot
Copy link
Contributor

WordPress Alpha📲 You can test the changes from this Pull Request in WordPress Alpha by scanning the QR code below to install the corresponding build.
App NameWordPress Alpha WordPress Alpha
ConfigurationRelease-Alpha
Build Numberpr21064-a530793
Version22.7
Bundle IDorg.wordpress.alpha
Commita530793
App Center BuildWPiOS - One-Offs #6308
Automatticians: You can use our internal self-serve MC tool to give yourself access to App Center if needed.

@wpmobilebot
Copy link
Contributor

Jetpack Alpha📲 You can test the changes from this Pull Request in Jetpack Alpha by scanning the QR code below to install the corresponding build.
App NameJetpack Alpha Jetpack Alpha
ConfigurationRelease-Alpha
Build Numberpr21064-a530793
Version22.7
Bundle IDcom.jetpack.alpha
Commita530793
App Center Buildjetpack-installable-builds #5331
Automatticians: You can use our internal self-serve MC tool to give yourself access to App Center if needed.

Copy link
Contributor

@staskus staskus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 LGTM

@crazytonyli crazytonyli merged commit 16c3626 into trunk Jul 18, 2023
@crazytonyli crazytonyli deleted the weak-delegate-violation-fixes-6 branch July 18, 2023 01:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants