Я использую следующий код для просмотра связанного списка в цели c
const MSList *calls = linphone_core_get_calls(LC);
if (calls == NULL)
{
[self dismissCtrl];
//how to check current is which screen is on
// while ((currentView == CallView.compositeViewDescription) ||
// (currentView == CallIncomingView.compositeViewDescription) ||
// (currentView == CallOutgoingView.compositeViewDescription)) {
// [self popCurrentView];
// }
} else {
linphone_call_resume((LinphoneCall *)calls->data);
while (calls)
{
if(calls->data != NULL && calls->data != nil && calls->data != (__bridge void *)((id)[NSNull null]))
{
//crash
if (linphone_call_get_state((LinphoneCall *)calls->data) == LinphoneCallIncomingReceived ||
linphone_call_get_state((LinphoneCall *)calls->data) == LinphoneCallIncomingEarlyMedia) {
[self displayIncomingCall:(LinphoneCall *)calls->data];
break;
}
}
calls = calls->next;
}
Приложение аварийно завершает работу, когда весь список не равен нулю, но его данные, предыдущее или следующее значение равно NULL. Я добавил код, чтобы проверить, что данные имеют значение NULL, но если они (данные) имеют значение NULL, то я не смогу получить к ним доступ, и в условиях само приложение не работает. Как это предотвратить? Я приложил снимок экрана, на котором происходит сбой приложения и какое значение содержит список в то время.