Инструмент в Xcode, чтобы проверить, сохраняет ли функция функцию или нет? - PullRequest
0 голосов
/ 06 февраля 2012

В настоящее время я работаю над приложением iOs, и есть одна вещь, которая вызывает такую ​​боль ... ну, в любом случае, боль: мне всегда нужно проверять документацию, чтобы знать, сохраняется ли свойство объекта или нет (например, setDelegate UITextField назначает делегат и не сохраняет его, тогда как функция setFont сохраняет ... https://developer.apple.com/library/ios/#documentation/uikit/reference/UITextField_Class/Reference/UITextField.html)

Это ... боль. Есть ли способ узнать это прямо в Xcode?

Заранее спасибо

Ответы [ 3 ]

2 голосов
/ 06 февраля 2012

Делегаты - это особый случай, потому что то, что вы устанавливаете как делегат, обычно представляет собой объект, срок жизни которого превышает или равен объекту, для которого он делегируется (т. Е. Контроллер представления будет делегатом текстового поля).,Из-за этого шаблоны проекта делегаты назначаются, а не сохраняются, чтобы избежать циклов сохранения.Если вы создаете новый объект, который будет выступать в качестве делегата для какого-либо другого объекта, вам придется его сохранить, но это не совсем пахнет, если вы делаете это таким образом.

В остальных случаях я действительно не понимаю, в чем ваша проблема или почему вы проверяете документацию.Вам не нужно заботиться о сохранении или иным образом, что объекты каркаса делают со своими свойствами.Вам нужно заботиться только о сохранениях и выпусках, которые вы сделали в своем собственном коде.

У вас есть пример свойства, не являющегося делегатом, в объекте UIKit, который вы должны сохранить сами, потому что объект UIKit не сохраняет его?

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

Простой ответ: переключитесь на поддержку только iOS5 и используйте ARC.Вам (в основном) не нужно беспокоиться о подобных вещах.

Но, на самом деле, вам все равно не нужен такой инструмент.Соглашения очень просты.

  • Если вы размещаете, сохраняете или копируете что-то, вам нужно в какой-то момент освободить его
  • В противном случае вы не

На практике делегаты ничем не отличаются.Зачем?Ну, делегат должен быть хотя бы столько же, сколько объект с делегатом.Так что, в отличие от вашего setFont: пример, вы вряд ли будете делать alloc; delegate = ...; release.

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

Я новичок в Objective C. Но я думаю, что вам не нужно знать.Вы просто передаете свойство, и это до класса (в данном случае UITextField), чтобы сохранить его или нет.Вы не должны держать его после прохождения, если вам это не нужно для чего-то другого.

Кроме того, попробуйте переключиться на ARC, намного меньше головной боли для начинающих.

...