Me molesta un poco que algunos objetos sean liberados automáticamente sin que yo lo sepa. Probablemente sea bueno que lo sean, pero si lo son, quiero saber. La documentación no dice qué métodos abren automáticamente los objetos, por lo que generalmente pruebo el camino a seguir, que en mi opinión es una tontería. Por ejemplo, [NSDate date] libera automáticamente el objeto, y también lo hace [NSArray arrayWithObjects: ...]. ¿Cómo lo sabes sin que la documentación te lo diga?¿Cómo saber si un objeto se libera automáticamente o no?
Estoy empezando a ver un patrón, aunque métodos como estos, los que crean objetos con una función estática, siempre devuelve el objeto liberado automáticamente. Es esto siempre cierto?
Creo que quiere decir "método de clase" (en lugar de "método de instancia") en lugar de "función estática". Como se explica a continuación, el +/- no determina si un objeto devuelto se libera automáticamente, es una cuestión de convenciones y reglas simples. La mayoría de los métodos devuelven objetos que debe conservar: los métodos que devuelven un objeto con un conteo retenido de +1 son la excepción en lugar de la regla. –
Método de la clase realmente quise decir. Utilicé "estática" de la terminología de Java y por alguna razón "función", aunque debería haber sido "método". Bueno, todos son iguales en la memoria de todos modos. :) – quano