Цель C ARC релиз без назначения переменной - PullRequest
0 голосов
/ 17 февраля 2012

В Objective C ARC безопасно ли делать [[[MYObject alloc] init] callSomeMethod]? Будет ли он выпущен, даже если я не назначу переменную?

Ответы [ 2 ]

1 голос
/ 17 февраля 2012

Да, будет.Если вы нервничаете по этому поводу, это легко проверить.Просто поместите NSLog (@ "это сделал!");в методе -dealloc этого объекта и убедитесь, что он регистрируется.

0 голосов
/ 17 февраля 2012

Если вам не нужен объект для жизни после возврата callingSomeMethod, это безопасно сделать [[[MyObject alloc] init] callingSomeMethod].

Если вам нужно, чтобы объект жил после возвращения callingSomeMethod, то ваша программа должна создать сильную ссылку на него до того, как callingSomeMethod вернется. Примеры:

  • Если callingSomeMethod устанавливает объект в качестве цели NSTimer, вы в безопасности, потому что NSTimer сохраняет свою цель.
  • Если callingSomeMethod только устанавливает объект в качестве делегата UITableView, вы не безопасны, потому что UITableView не делает не , сохраняя свой делегат. В этом случае вы также должны создать сильную ссылку на объект в другом месте.
...