|
Hola a todos Para resolver el problema de pasar datos entre clases encontre que me puede funcionar una clase de tipo Singleton no si alguien tiene alun tutorial para poder declarar y usar una clase de tipo Singleton Saludos. |
|
Pues si te va más o menos el inglés, en la referencia de Apple Cocoa Fundamentals Guide hay un apartado (Creating a Singleton Instance) que explica qué son los Singletons y cómo implementar uno. Espero te sea de utilidad. |
|
Buenas pronuer, Pues con simplemente poner esto en tu clase:
Ya vale. Luego accederías con algo como:
De igual modo, puedes acceder a las propiedades del objeto. ¡Un saludete! Esto no es suficiente. Un singleton es un objeto que se queda siempre en memoria y no se puede liberar. La implementación completa esta en el documento sugerido en la primera respuesta.
(05 May '11, 19:22)
geppy
Lo sé. Pero como lo he visto un poco perdido, le he sugerido la vía rápida... :P
(05 May '11, 19:24)
juanmac ♦
|
|
Como ya te han comentado un Singleton es un patron de diseño que te aseguro que sólo existirá una instancia de esa clase en toda la aplicación. El uso masivo de singleton indica una mala construcción ya que realmente un singleton es algo peligroso (del mismo modo que las variables globales o estáticas lo pueden ser), pero esto no significa que a veces sea necesario su uso. En los frameworks de Objective-c de la propia Apple existen muchos singletons, como por ejemplo el acceso a la aplicación con Las construcciones del singleton son tal y como te han comentado anteriormente pero hay que tener cuidado por que El singleton debe de ser thread safety y esas construcciones anteriores no lo son. Y es posible que se llamen desde distintos threads y cada uno cree una instancia distinta y evidentemente no es lo que queremos. Para la construcción de un singleton thread safety hemos de bien utilizar el GCD para asegurarnos siempre de estar en el main thread
mas informacion en CocoaSamurai O bien sincronizando con el main thread
Un poco de rollo pero mucha gente no cae en lo de thread safety y después pueden tener problemas muy difíciles de debuggear Según tengo entendido hacer a un singleton thread safe, depende si este será utilizado concurrentemente por varios threads; si no es el caso no es necesario "sobre cargar" al singleton con esta funcionalidad ya que hacer un método synchronized es una operación costosa. De igual forma si el singleton es inmutable no es necesario hacerlo synchronized. Al menos es lo que he leido... :P
(06 May '11, 19:49)
sawbona
|
|
Hola, creo que las respuestas de arriba te han aclarado las dudas. Pero te dejo aquí un enlace a un artículo es castellano que justamente describe el uso de singletons: "Cómo crear un Singleton en Objective C y Cocoa" Un saludo, Gabriel |
Para eso no se usan singletons... Un singleton se hace para cuando quieres asegurarte de que en tu app solo hay una instancia de una determinada clase, por ejemplo, una clase de usuario que esté logeado en algún web server.
Para pasar datos de una vista a otra, lo suyo es usar delegación entre objetos como patrón de desarrollo...
Creo que juanmac tiene razón. Un singleton representa una única instancia de una clase; si quisieras tener un singleton como forma de pasar datos sería para asegurarte que ese dato es único en toda tu aplicación. Para pasar datos entre diferentes objetos existen otros patrones de diseño que, dependiendo de tu problema, podrían funcionar o no.