Я нашел похожий вопрос, который вызвал то же исключение, но это не помогло.Никто не ответил: Получение «Один шаг до выхода из функции CALayerGetDelegate, которая не имеет информации о номере строки».in iphone sdk
Пример параметра, который работает, когда программа имеет значение aa+a+
Пример параметра, который вызывает разрыв, когда метод, вызываемый программой-параметром снова, равен aa+a+a
.Почему?
Вот мой код:
+(NSSet *)variablesUsedInsideProgram:(id)program
{
NSMutableSet *variablesUsed = [NSMutableSet setWithArray:program];
//put the program into a mutable set then pop off everything else that is !a,!b,!c
id objectReferenceFromVariablesUsed = nil;
for(objectReferenceFromVariablesUsed in variablesUsed) //breaks here
{
if (!([objectReferenceFromVariablesUsed isEqual:@"a"] | [objectReferenceFromVariablesUsed isEqual:@"b"] | [objectReferenceFromVariablesUsed isEqual:@"c"]))
{
[variablesUsed removeObject:objectReferenceFromVariablesUsed];
}
}
return [variablesUsed copy];
}
Распечатка отладочных операторов, которые я получаю:
(gdb) po program<__NSArrayI 0x68a7a00>(a,a,+,a,+,a)
, поэтому я знаю, что моя программа помещена в переменную a
(gdb) po variablesUsed
{(
"+",
a
)}
Уникальные значения из программы при добавлении в NSMutableSet
То, что я знаю, что происходит:
objectReferenceFromVariablesUsed = +, затем оно выталкивается из Set
(gdb) po variableUsed {(a)}
Возвращается в цикл, затем прерывается.Получает сообщение об ошибке «Один шаг до выхода из функции objc_exception_throw, у которой нет информации о номере строки. Точка захвата 2 (выброшено исключение).
Кто-нибудь знает, что может быть причиной этого?