Pregunta

Soy bastante nuevo en Objective-C, y como he estado aprendiendo, he estado tratando de hacer mi propio programa. La idea es que hay una variable (¿u objeto?) Nombrado totalSave, un método addToTotalSaved con un parámetro saveAmount, y múltiples objetos (cada objeto le daría al parámetro saveAmount un valor diferente) que cuando se actúe causará addToTotalSaved ser 'enviado', o cualquiera que sea la terminología, para totalSave de modo que totalSave aumenta por la cantidad correcta.

En primer lugar, si mi idea de cómo funciona el código es completamente incorrecto, ¿podría ofrecer una mejor manera? ... Siento que esto no debería ser complejo, pero de lo contrario mi pregunta es lo que debería totalSave ¿ser? Un int? ¿Un nsinteger? ¿Un objeto?

¿Fue útil?

Solución

Parece que lo has hecho demasiado complejo. Obviamente, la idea no es realmente "hay una variable nombrada totalSave"Dado que el usuario no le importa dónde lo almacene, y desde el resto de su publicación, en realidad no le importa cómo lo almacene.

Dicho esto, para que esto sea un poco más concreto, pensemos en un estado de "puntaje total" al que podrían agregar numerosas partes del programa. Hay un par de enfoques que puede adoptar. En cualquier caso, es probable que tenga algún objeto en algún lugar que realice un seguimiento del puntaje. Lo llamaremos el Game objeto, pero podría ser un Level o lo que sea.

Entonces hay tres grandes escuelas de pensamiento: puedes pasar esto Game oponerse a todos, puedes tener un Game singleton, o puede usar notificaciones. Cada uno de estos enfoques tiene ventajas, y cualquiera que elija probablemente esté bien para un programa simple (personalmente, para un programa muy simple, usaría un singleton).

En el primer esquema, en algún momento del programa crea un Game objeto que tiene algunos addToScore: método. Asigna este objeto como una propiedad en cualquier otro objeto que necesite actualizar la puntuación. Cada una de esas llamadas [self.game addToScore:value]. Este enfoque hace que las pruebas unitarias sean un poco más simples, pero puede ser un poco tediosa de implementar.

En el segundo esquema, tienes algunos singleton compartido +[Game sharedGame]. Cuando desee actualizar el puntaje, llame [[Game sharedGame] addToScore:value]. Este es generalmente el Easet para implementar.

En el tercer esquema, tienes algún objeto (Game) que usa NSNotificationCenter para observar alguna notificación. Cuando desee actualizar el puntaje, solo publique una notificación que incluye la cantidad a agregar en su diccionario de usuario. Esto es excelente para mantener las cosas extremadamente desacopladas, pero nuevamente puede ser un poco tediosa en el caso más habitual.

Pero como señala @Chuck, probablemente esté pensando demasiado en esto, y es posible que desee regresar y trabajar a través de algunos de los tutoriales para tener una mejor idea de cómo funcionan estas cosas. El tipo de situación que estás describiendo no es muy complicada.

Otros consejos

Parece que quieres una clase, que contiene un valor entero con el total. Entonces desea darle a esa clase una función AddTototal (Somenum).

Posiblemente, podría hacer esto de procedimiento, pero si desea reutilizar este total, recomendaría rellenarlo en una clase.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top