Обратите внимание, я не использую Interface Builder.
Я сделал свои subViews __weak
так, чтобы они автоматически обнулялись в iOS 5 с помощью ARC, когда объекты, на которые они ссылаются, освобождаются. Это означает, что мне не нужно обнулять их вручную в viewDidUnload
(что кажется самым безопасным шаблоном).
Однако, поскольку они слабые, я не могу напрямую назначить их своим иварам, когда я их alloc
, или ARC немедленно их выпускает, единственное решение, которое я нашел, — это назначить временную сильную локальную переменную, например так:
UIView *strongTmp = [[UIView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:strongTmp];
weakIVar = strongtmp;
Это некрасиво, и его цель не сразу очевидна без подробного комментария. Я хочу что-то (более) элегантное, например:
[self.view addSubview:weakIVar = [[UIView alloc] initWithFrame:self.view.bounds]];
Но это генерирует такое же предупреждение компилятора (объект будет освобожден сразу после присваивания).
Какие-либо предложения? Заранее спасибо.