ARC и локальные переменные - PullRequest
0 голосов
/ 22 июля 2011

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

К сожалению, мое приложение содержит HUD с пользовательскими компонентами, такими как UIButtons. Их селекторы указывают на сам HUD, и поэтому я всегда получаю EXC_BAD_ACCESS, потому что контроллер был освобожден после его создания.

Есть ли решение этой проблемы, кроме создания переменной экземпляра в заголовке моего класса?

1 Ответ

2 голосов
/ 22 июля 2011

Хотя это действительно то же самое, что поместить iVar в заголовок, вы можете, по крайней мере, сделать вещи чище, создав частную категорию в верхней части файла .m, которая определяет свойства, в которых можно хранить кнопки UIB.

@interface MyClass ()
@property (nonatomic, retain) UIButton *myButton;
@end

@implementation MyClass
@synthesize myButton;

....

self.myButton = thingThatisHoldingYourButton;

// Now for the block
...