Problema de list enlazada en el objective C

Estoy tratando de agregar un nodo a la cabeza, pero la cabeza es nula. ¿Alguna idea de lo que está pasando?

Tengo esta image del process de debugging.

[Tenga en count que se trata de una implementación de una list enlazada con tamaño, ¡no permita que eso lo confunda!]

Nodo.h

//literally contains no other code and the .m file is empty, all I want //is a pointer to the next object @interface Node : NSObject @property (nonatomic, weak, readwrite) Node *next; @end 

NList.m – Omitido .h porque creo que debería estar bien

 @interface NList() @property (weak, nonatomic, readwrite) Node *head; @property (nonatomic,readwrite) NSInteger size; @property (nonatomic) NSInteger num_nodes; @end ... - (id) initWithSize:(NSInteger)size { self = [super init]; if (self){ self.head = nil; self.size = size; self.num_nodes = 0; } return self; } - (void)add:(NSObject *)node { Node *newNode = [[Node alloc] init]; if (self.head){ newNode.next = self.head; self.head = newNode; } else{ self.head = newNode; } self.num_nodes++; } 

file de testing

 - (void)testAdd { NList *testList = [[NList alloc] initWithSize:2]; NSObject *testNodeOne = @1; [testList add:(testNodeOne)]; XCTAssertNotNil(testList.head); NSObject *testNodeTwo = @3; [testList add:testNodeTwo]; XCTAssertNotNil(testList.head); //XCTAssertNotNil(testList.head.next); } 

¿Por qué las properties de tus nodos son débiles? Basándote en lo que mostraste aquí, deberían ser fuertes. La list en sí debería retener el nodo raíz (cabeza), y cada nodo de la list debería retener el siguiente nodo, de lo contrario, nada más conservará esos objects.

Además, como nota al margen, al mirar sus properties creo que ha confundido el valor pnetworkingeterminado al mirar readwrite vs readonly . readwrite es el valor pnetworkingeterminado y no necesita especificarse explícitamente. readonly debe especificar explícitamente para cualquier propiedad que no deba tener un mutador. Pareces tener esto al revés en tus properties.