Estoy inmerso en el desarrollo de iOS mientras trato de comprender Objective-C y todavía estoy en esa fase en la que, donde quiera que mire, veo cosas que no tienen ningún sentido para un veterano programador en C como yo. En this Game Kit example on Apple's dev site, uno de los archivos de cabecera declara una interfaz de clase, tres momentos diferentes ...¿Por qué este ejemplo de código en el sitio de desarrollo de Apple declara tres interfaces para la misma clase?
@interface SessionManager : NSObject <GKSessionDelegate> {
NSString *sessionID;
GKSession *myGKSession;
NSString *currentConfPeerID;
NSMutableArray *peerList;
id lobbyDelegate;
id gameDelegate;
ConnectionState sessionState;
}
@property (nonatomic, readonly) NSString *currentConfPeerID;
@property (nonatomic, readonly) NSMutableArray *peerList;
@property (nonatomic, assign) id lobbyDelegate;
@property (nonatomic, assign) id gameDelegate;
- (void) setupSession;
- (void) connect:(NSString *)peerID;
- (BOOL) didAcceptInvitation;
- (void) didDeclineInvitation;
- (void) sendPacket:(NSData*)data ofType:(PacketType)type;
- (void) disconnectCurrentCall;
- (NSString *) displayNameForPeer:(NSString *)peerID;
@end
// Class extension for private methods.
@interface SessionManager()
- (BOOL) comparePeerID:(NSString*)peerID;
- (BOOL) isReadyToStart;
- (void) voiceChatDidStart;
- (void) destroySession;
- (void) willTerminate:(NSNotification *)notification;
- (void) willResume:(NSNotification *)notification;
@end
@interface SessionManager (VoiceManager) <GKVoiceChatClient>
- (void) setupVoice;
@end
veo que cada interfaz es diferente, pero especifique el mismo nombre de la clase.
- ¿Cuál es la razón de esto?
- También he notado este mismo comportamiento en otros ejemplos de código, solo que en lugar de declarar múltiples interfaces en el archivo de encabezado, verá un bloque @interface adicional declarado hacia la parte superior del archivo de implementación .m, típicamente sobre el @ Bloque de implementación. ¿Por qué?
¡Muchas gracias de antemano por su sabiduría!