Soy un novato, tratando de tomar una aplicación freeware actualizada por última vez en 2008 y (aparentemente) abandonada por los programadores, que no han respondido a mis correos electrónicos, y ambos lo actualizan para el MacOS actual y también crean una versión para el iPhone. Me imagino que va a ser un proceso largo y algo de pesadilla, pero estoy deseando aprender.novato tratando de entender múltiples @interface en archivo .h
En este momento estoy en las etapas iniciales, y yo estoy mirando el siguiente archivo de GeniusPair.h en el original:
#import <Foundation/Foundation.h>
@class GeniusItem;
@class GeniusAssociation;
extern const int kGeniusPairDisabledImportance;
extern const int kGeniusPairMinimumImportance;
extern const int kGeniusPairNormalImportance;
extern const int kGeniusPairMaximumImportance;
@interface GeniusPair : NSObject <NSCoding, NSCopying> {
GeniusAssociation * _associationAB; //!< Stats for standard learning mode directional relationship.
GeniusAssociation * _associationBA; //!< Stats for Jepardy style learning mode directional relationship.
NSMutableDictionary * _userDict;
}
+ (NSArray *) associationsForPairs:(NSArray *)pairs useAB:(BOOL)useAB useBA:(BOOL)useBA;
- (id) initWithItemA:(GeniusItem *)itemA itemB:(GeniusItem *)itemB userDict:(NSMutableDictionary *)userDict;
//various other methods declared
@end
@interface GeniusPair (GeniusDocumentAdditions)
- (BOOL) disabled;
//various other methods declared
@end
@interface GeniusPair (TextImportExport)
- (NSString *) tabularTextByOrder:(NSArray *)keyPaths;
//various other methods declared
@end
Mi pregunta es (son preguntas): ¿Por qué tener más de una interfaz en un archivo .h? ¿Cuál es la diferencia entre @interface GeniusPair : NSObject
y @interface GeniusPair (TextImportExport)
? ¿Qué significa tener un @interface
seguido de algo entre paréntesis frente a un @interface
seguido de dos puntos?
Muchas gracias de antemano por su ayuda explicando.
También me gusta declarar interfaces en la parte superior de mis archivos .m para implementar métodos privados falsos, ya que solo serán visibles para la clase pero no para otras clases (por supuesto, todavía se podrán llamar, debería una clase externa ahora están allí). – Simon
@Simon sí, yo también agregaré eso. –
¡Muchas gracias! –