Да, это нормально.c является локальной переменной, указывающей на экземпляр MyComposite.Переназначение другого значения указателя MyComposite на c не влияет на исходный экземпляр MyComposite.
Что касается ответа Yuji, вам не следует использовать NSArray или NSSet для хранения рекурсивной структуры данных, с вашей структурой данных все в порядке,NSArray и NSSet предназначены для плоских наборов данных и не могут указывать какие-либо отношения между их членами, кроме принудительного линейного упорядочения в случае NSArray.