Я экспериментировал со своим приложением в симуляторе ios, когда обнаружил, что оно выдает сигнал SIGKILL, когда я удаляю его с панели многозадачности, а затем повторно запускаю. (Я делаю это, останавливая приложение, запускаю другое приложение, затем удаляю первое приложение из панели многозадачности и повторно запускаю его.)
Я подумал, что это может иметь какое-то отношение к моему последнему эксперименту, добавлению Core Data, но после попытки упростить условия, похоже, что это происходит с каждым приложением, с которым я его тестирую.
Код останавливается в отладчике в точке, указанной моим комментарием:
#import <UIKit/UIKit.h>
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil); //<- STOPS with SIGKILL here
[pool release];
return retVal;
}
Я также обнаружил, что это похоже на остановку, как если бы это была точка останова. Я нажимаю кнопку «Продолжить», и она возобновляется, как будто ничего не произошло. Я ставлю настоящую точку останова на отмеченной строке, и она там останавливается. Нажатие кнопки «Продолжить» позволяет программе возобновить работу без появления сигнала SIGKILL.
Я попробовал это с базовой программой-шаблоном для Core Data, без каких-либо собственных модификаций, и сигнал появился. Я пробовал это с другими программами, которые не используют Core Data, и сигнал возникает. Я пробовал это, когда программа уже загружена, но не отлаживается, и программа ведет себя правильно, даже если проблема возникает во время отладки.
Конечно, SIGKILL не выдает никаких сообщений об ошибках, которые могут помочь.
Кто-нибудь знает, что происходит? Это не похоже на настоящую проблему, но я хочу убедиться, что понимаю ее.
Я использую XCODE4.