Вы неправильно управляете памятью.
(1) Эта строка кода утечка. Автоматический выпуск экземпляра SMLDirectoryDataItem.
return (item == nil) ? [[SMLDirectoryDataItem alloc] initWithPath:rootDirectory parent:nil] : [item childAtIndex:index];
(2) В вашем -initWithPath: parent: метод следующая строка кода не сохраняет строку. Автозапуск выпускает его при сливе. Скорее всего, это приводит к вашей аварии:
relativePath = [path lastPathComponent];
Отзыв:
http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html
В коде есть некоторые дополнительные проблемы (обновленный код):
(1) Прежде всего, это ...
#define IsALeafNode ((id)-1)
.... совершенно не так. Вы передаете -1 в вещи, которые ожидают объекты. Немедленный сбой, если что-либо сохраняет / авто-релизы или другие сообщения, которые.
(2) Кроме того, вы все еще неправильно управляете памятью. Ваш -setRootDirectory: метод не сохраняет строку. Я бы предложил использовать @property и @synthesizing setter / getter.
(3) Ваш метод -children пропускает нити, как сито. В частности, неверно использование переменной имени файла.