removefromsuperview выпускает объекты scrollview?

Погрешности округления с плавающей точкой. 0.1 не может быть представлен так же точно в основе 2 как в основе 10 должных к недостающему простому множителю 5. Так же, как 1/3 берет бесконечное число цифр для представления в десятичном числе, но "0.1" в основе 3, 0.1 берет бесконечное число цифр в основе 2, где это не делает в основе 10. И компьютеры не имеют бесконечного объема памяти.

11
задан Deepesh 4 July 2012 в 16:21
поделиться

3 ответа

@MathieuK is correct, but it's worth digging deeper into this, because it's a very important concept in ObjC. You should never call -release on an object you didn't -retain explicitly or implicitly (by calling one of the Three Magic Words). You don't call -release in order to deallocate an object. You call it to release the hold you have put on the object. Whether scrollview is retaining its subviews is not your business (it does retain its subviews, but its still not your business). Whether -removeFromSuperview calls -release is also not your business. That's betweeen the scrollview and its subviews. All that matters is that you retain objects when you care about them and release them when you stop caring about them, and let the rest of the system take care of retaining and releasing what it cares about.

29
ответ дан 3 December 2019 в 01:45
поделиться

Счетчик сохранения ваших вложенных представлений, вероятно, равен 1. Когда вы вызываете [выпуск подпредставления]; , счетчик сохранения становится равным 0, и подпредставление освобождается из памяти. Последующий доступ к subview (для вызова removeFromSuperview ) завершается сбоем, потому что subview больше не существует.

В этом случае вы должны просто позвонить [subview removeFromSuperview] , потому что removeFromSuperview вызовет релиз в самой подпредставлении.

10
ответ дан 3 December 2019 в 01:45
поделиться

You need to revise the Cocoa Memory Management.

You simply do not release things that you have not explicitly allocated or retained yourself.

1
ответ дан 3 December 2019 в 01:45
поделиться