Mi aplicación tiene un sistema de complemento que permite a mis usuarios escribir sus propios complementos que se cargan en tiempo de ejecución. Por lo general, esto está bien, pero en algunos casos dos complementos usan las mismas bibliotecas que causarán una colisión entre esos dos.Cocoa/Objective-C Complementos Colisiones
Ejemplo:
Plugin Un quiere usar TouchJSON para trabajar con JSON y por lo tanto el creador añade el código TouchJSON a la fuente plugin y se pone compila y se enlaza en el binario de complemento. Más tarde, , el complemento B también quiere usar esa misma biblioteca y hace exactamente lo mismo. Ahora, cuando mi aplicación carga estas dos plugins diferentes que detecta esto y escupe una advertencia como esta:
Clase CJSONScanner se implementa en tanto [path_to_plugin_a] y [path_to_plugin_b]. Se usará uno de los dos . Cuál es indefinido
Como mi aplicación simplemente carga complementos y se asegura de que se ajusten a un cierto protocolo, no tengo control sobre qué complementos están cargados y si dos o más usan la misma biblioteca.
Siempre que ambos complementos utilicen la misma versión exacta de la biblioteca, esto probablemente funcionará, pero tan pronto como la API cambie en un complemento surgirán muchos problemas.
¿Hay algo que pueda hacer al respecto?
Justo como pensaba. Me pregunto si nadie se está enfrentando a este problema cuando hay bastantes aplicaciones de Mac que permiten complementos (Coda, TextMate, Xcode, etc.) – hjaltij
@zneak ¿Quiere decir presentar un informe de error con TouchJSON por no proporcionar un marco? – hooleyhoop