Objetivo C: mensajería/declaración de propiedad/problema ARC
Frecuentes
Visto 321 veces
0
Obtengo lo que XCode etiqueta como ARC Issue
que me cuesta bastante analizar. tengo esta clase:
typedef void (^sig_cb_t)(NSString *parm);
@protocol Signaleer
// <snip>
-(void) connect:(NSString *) verb
parm:(NSString*) param
callback:(sig_cb_t)callback;
@end
// In another header:
@interface Switchboard : NSObject <Signaleer> {
@private
NSMutableDictionary *bus;
}
// In init: method:
bus = [[NSMutableDictionary alloc] init];
// actual implementation:
-(void) connect: (NSString *)verb
parm:(NSString*)parm
callback:(sig_cb_t)callback {
NSMutableArray *callbacks = [self.bus objectForKey:verb];
NSArray *signal = [NSArray arrayWithObjects:callback, parm, nil];
if (callbacks == nil) {
NSArray *initial = [NSArray arrayWithObjects:signal, verb, nil];
[bus setObject: initial, forKey:verb];
} else {
[callbacks addObject:signal];
}
}
La línea [bus setObject: initial, verb]
da como resultado el error No visible @interface for 'NSMutableDictionary' declares the selector 'setObject:'
. ¿Alguien que pueda explicar esto?
3 Respuestas
1
Supongo que te refieres aquí a la línea:
[bus setObject: initial, forKey:verb];
(usted escribe [bus setObject: initial, verb]
en la última línea de su pregunta que supongo que es un error)
Ambas líneas tienen una coma allí, que no debería estar allí.
contestado el 29 de mayo de 12 a las 15:05
0
Tienes una coma después initial
. Debería ser:
[bus setObject:initial forKey:verb];
contestado el 29 de mayo de 12 a las 15:05
0
Elimine la coma de esa llamada de método y ya no tendrá el error. No se necesitan comas para separar las listas de parámetros normales en Objective-C
[bus setObject:initial forKey:verb];
contestado el 29 de mayo de 12 a las 15:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas objective-c automatic-ref-counting or haz tu propia pregunta.
¡Maldito! Así es, pensando demasiado en la sintaxis de otros lenguajes, obviamente. - jacob oscarson