NSAutoreleasepool: проблема управления памятью в приложении для iPhone - PullRequest
0 голосов
/ 28 февраля 2011
__NSAutoreleaseNoPool(): Object 0x4c70ec0 of class UISegmentedControl autoreleased with no pool in place - just leaking
__NSAutoreleaseNoPool(): Object 0x4c70ec0 of class UISegmentedControl autoreleased with no pool in place - just leaking
__NSAutoreleaseNoPool(): Object 0x4c70ec0 of class UISegmentedControl autoreleased with no pool in place - just leaking
__NSAutoreleaseNoPool(): Object 0x4c70ec0 of class UISegmentedControl autoreleased with no pool in place - just leaking
__NSAutoreleaseNoPool(): Object 0x4c70ec0 of class UISegmentedControl autoreleased with no pool in place - just leaking

Это то, что я получаю как предупреждение в консоли.Хотя это не приводит к сбою, но, похоже, является некоторой проблемой управления памятью.

Что может быть не так?

Я не выпустил автоматически свой сегментированный элемент управления.

Ответы [ 2 ]

7 голосов
/ 28 февраля 2011

Эта проблема обычно возникает, когда вы используете многопоточность.Если вы используете многопоточность, следует создать пул автоматического выпуска для этого потока

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

//Code....

[pool release];
0 голосов
/ 28 февраля 2011

Если вы используете UISegmentedControl в потоке, который не является основным, как сказал @Martin, это небезопасно.

Справочник по UIKit Framework - Введение

Примечание. По большей части классы UIKit следует использовать только из основного потока приложения.Это особенно актуально для классов, производных от UIResponder или связанных с каким-либо образом манипулированием пользовательским интерфейсом вашего приложения.

...