Правильный способ вернуть значение c - это getValue:
:
Node n;
[structValue getValue:&n];
pointerValue
не возвращает указатель на сохраненное значение, он считывает значение указателя из памяти, в которой хранится Node
(например, union { Node n; void* pointerValue; }
).