Pregunta

Si pudieras agregar algo a Cocoa, ¿cuál sería? ¿Hay alguna característica, mayor o menor, que diría que falta en Cocoa? ¿Quizás hay una rueda que ha tenido que inventar una y otra vez debido a una omisión en los marcos?

¿Fue útil?

Solución

  • El soporte de expresión regular incorporado (a la RegexKit ) sería extremadamente útil. NSRegularExpression está disponible en iOS 4.0+, pero aún no está disponible en Mac OS X.

  • Una manera fácil de leer progresivamente objetos NSString de un archivo de texto grande sin cargar todo en la memoria. (NSInputStream y NSFileHandle simplemente no están a la altura de eso).

  • La capacidad de hacer opcionalmente NSSet / NSMutableSet / NSCountedSet almacenar y enumerar objetos en orden ordenado (como un árbol de búsqueda binario ) sin duda sería bienvenido. Lo mismo ocurre con las matrices Cocoa: actualmente tengo que llamar a algo como - [NSArray sortedArrayUsingSelector:] o - [NSMutableArray sortUsingSelector:] para obtener una matriz ordenada, y para los conjuntos I primero tiene que crear la matriz.

  • Una cola de montón / prioridad. Un envoltorio de cacao alrededor de CFBinaryHeap (que definitivamente no es tan fácil de usar como Las colecciones de cacao) probablemente funcionarían.

  • Un diccionario que puede almacenar múltiples valores para cada clave, comúnmente conocido como multiset . NSCountedSet es prácticamente un conjunto múltiple / bolsa, y sería bueno tener lo mismo para las asociaciones de valores clave (NSMultiDictionary?) En lugar de tener que rodar el mío.

  • Un contenedor amigable para FSEvents . (CFFileDescriptor hace parte del trabajo, pero no es fácil para Cocoa).

  • Un método para crear un NSString a partir de una cadena de formato y una matriz de objetos (no solo varargs). Esta respuesta SO muestra un ejemplo. Hacer que funcione con primitivas sería complicado ... ¿Quizás una NSPointerArray?

  • API consistentes y centralizadas que simplifican el formateo (y el análisis) de números de teléfono para una variedad de configuraciones regionales. Actualmente tiene que rodar el suyo con un NSNumberFormatter (o NSScanner), y el proceso es tedioso y propenso a errores. (Por ejemplo, consulte NSNumberFormatter para formatear números de teléfono de EE. UU. y Eliminar todos menos los números de NSString .)

Por supuesto, definitivamente soy fanático de una amplia variedad de estructuras de datos en en general, aunque la simplicidad de Cocoa es refrescante en comparación con algunos idiomas.

Otros consejos

Una forma de especificar propiedades de copia / retención que se liberan automáticamente en dealloc. Quizás

@property (nonatomic, copy, dealloc) NSString* name;

Y RegexKit, por supuesto.

Soporte multiusuario para Core Data. Uno puede soñar :)
Pero al menos Core Data ahora está disponible en el iPhone con OS 3.0.

Una forma de marcar todas las entidades de datos centrales como transitorias. Esto sería particularmente útil para implementar el intercambio de Bonjour.

Por ejemplo, supongamos que tengo un modelo similar a iTunes, con entidades Playlist y Song . Actualmente, para implementar el intercambio de Bonjour, creo dos subclases adicionales de NSObject , TransientPlaylist y TransientSong , que implementan los mismos métodos que sus Datos principales contrapartes.

No debería necesitar duplicar el número de clases de modelo solo para tener versiones transitorias de mis objetos, no cuando quiero que se comporten exactamente igual, sin persistencia.

(Sí, la otra opción es tener un almacén persistente en memoria que alberga todas las entidades que desea que sean transitorias. De cualquier manera, es una sobrecarga innecesaria)

Un contenedor más amigable alrededor del Keychain Servicios .

  • Buen soporte de expresiones regulares
  • Administradores de diseño en AppKit. Autoresizing simplemente no es suficiente para GUI complicadas.

@property (.., copy) admite clases de tipo mutable ( NSMutableArray , NSMutableDictionary , etc.). Actualmente, si asigna un valor a la propiedad para una clase de tipo mutable, el objeto creado no será mutable (debido a la copia).

Soporte adecuado para servicios web.

Al llegar a Cocoa desde el mundo .NET, tengo una solicitud: LINQ!

En los últimos meses, me ha encantado poder usar LINQ en cualquier colección que se me acerque.

Ciertamente, una interfaz razonable desde la gestión de contextos de objetos hasta servidores de bases de datos SQL sería genial.

Me gustaría ver mejores ejemplos de escritura de vistas personalizadas con celdas creadas programáticamente, todas con desplazamiento automático muy bien.

Además, parece haber una brecha real en el soporte de IB para ventanas complejas de paneles múltiples con divisores de trabajo. ¿Supongo que están trabajando en esto?

¿Y qué pasó con la resolución de independencia, eh?

Soporte JSON incorporado para importaciones / exportaciones.

Definitivamente una contraparte para Carbon HotKeys !

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