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

Fix memory leaks on viewing a post from a notification #21013

Merged
merged 1 commit into from
Jul 9, 2023

Conversation

crazytonyli
Copy link
Contributor

Relates to #20989.

Issue

When done viewing a post from the Notifications tab, the post detail view isn't released.

To reproduce this issue:

  1. Put breakpoints at viewDidLoad and deinit functions in ReaderDetailViewController.
  2. Launch the app from Xcode.
  3. Go to the Notifications tab.
  4. Tap a notification that says " posted on ", or any other kinds of notification that takes you to ReaderDetailViewController.
  5. Xcode should hit the breakpoint at ReaderDetailViewController.viewDidLoad. This step is just to confirm that the ReaderDetailViewController has been created
  6. Exit the post details screen.
  7. Xcode should hit the breakpoint at ReaderDetailsViewController.deinit.

Performing the above steps on the trunk branch doesn't hit the deinit breakpoint, which means the view controller is not released.

You can test this PR by repeating the same steps on this PR branch and verify that Xcode stops at deinit breakpoint.

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)
    Viewing notifications and posts.

  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.8 milestone Jul 5, 2023
@crazytonyli crazytonyli requested review from jkmassel and mokagio July 5, 2023 22:37
@crazytonyli crazytonyli self-assigned this Jul 5, 2023
@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 Numberpr21013-e44432e
Version22.7
Bundle IDcom.jetpack.alpha
Commite44432e
App Center Buildjetpack-installable-builds #5238
Automatticians: You can use our internal self-serve MC tool to give yourself access to App Center if needed.

@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 Numberpr21013-e44432e
Version22.7
Bundle IDorg.wordpress.alpha
Commite44432e
App Center BuildWPiOS - One-Offs #6212
Automatticians: You can use our internal self-serve MC tool to give yourself access to App Center if needed.

Copy link
Contributor

@mokagio mokagio left a comment

Choose a reason for hiding this comment

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

Tested on Simulator.

viewDidLoad called ✅

image

deinit called

image

@@ -15,7 +15,7 @@ class ReaderCommentsFollowPresenter: NSObject {

private let post: ReaderPost
private weak var delegate: ReaderCommentsFollowPresenterDelegate?
private let presentingViewController: UIViewController
private unowned let presentingViewController: UIViewController
Copy link
Contributor

Choose a reason for hiding this comment

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

Did you chose unowned so the type didn't have to become wrapped in Optional?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Indeed. Given this is a "presenter" type, it should not use the view controller reference if the view controller is released. If this unowned reference causes a runtime crash in the production app, I think we may have other issues.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants