Вы пытаетесь сделать что-то, что обычно [*] не поддерживается ни на одном языке OO - преобразовать экземпляр класса в экземпляр одного из его подклассов.
Ваше назначение self=originalException
- это просто (неверный тип) назначение указателя (которое компилятор и среда выполнения будут не проверять, так как вы использовали id
в качестве типа) - это не сделает CustomException
из NSException
.
Для достижения желаемого замените self=originalException
на
[super initWithName:[originalException name]
reason:[originalException reason]
userInfo:[originalException userInfo]]
, а затем продолжайте инициализировать поля, добавленные в CustomException
.
[*] В Objective-C в некоторых случаях возможно правильно преобразовать экземпляр класса в экземпляр подкласса, но не делают без очень очень очень очень хорошая причина. И если вы не знаете, как вам не следует об этом думать; -)