0

Я создал класс (MyClass) и вам нужно несколько экземпляров, каждый из которых будет содержать несколько таймеров, текстовых полей и меток. Из-за ARC, цель была освобождена, когда таймеры были недействительными, но иногда я их недействителен, чтобы перезапустить их, поэтому я не могу позволить им освободиться. Поэтому я пошел в свой AppDelegate (который является классом, который создает экземпляры MyClass) и объявил MyClass как сильное свойство. @property (strong) MyClass *myInstance; Это частично работает, проблема заключается в том, что всякий раз, когда я создаю другой экземпляр, предыдущий экземпляр теряет ссылку, и если я пытаюсь перезапустить NSTimer в старом экземпляре, я получаю BAD ACCESS. Если я перезапустил последний таймер, нет проблем.Независимо повторное использование объявленного сильного свойства

Я считаю, что поскольку myInstance является свойством, всякий раз, когда я создаю новый, AppDelegate перезаписывает старый, теряя старые ссылки. Мне нужно либо иметь возможность сохранить сильное свойство, но как-то заставить его работать независимо для каждого экземпляра или найти другой способ сделать myInstance сильной ссылкой, не имея при этом свойства.

+0

Этот дизайн довольно хрупок в любом случае. NSTimers не должны быть признаны недействительными и перезапущены. Вы должны либо использовать ваш обратный вызов, чтобы игнорировать тики, когда они должны быть «приостановлены» или просто создавать новые. – Chuck

+0

@ Чак, что значит игнорировать тики? и как? – Elbimio

+0

@Elbimio: вместо того, чтобы аннулировать таймер, пусть он срабатывает. Когда это произойдет, проверьте, приостановлена ​​ли вы, и делайте то, что должно быть периодическим, если вы этого не сделаете. –

ответ

3

Поместите свои экземпляры в контейнер, например NSSet или NSArray.

+0

Блестящий. Благодаря! – Elbimio

Смежные вопросы