¿Se pueden crear atributos de propiedades personalizadas en Objective-C como en VB.NET? Por ejemplo, en VB.NET puede crear el atributo "Navegable" y leerlo en tiempo de ejecución para determinar si debe mostrar una propiedad o no.Atributos de propiedades personalizadas en Objective-c
Public Class Employee
<Browsable(True)> _
Public Property Property1() As String
Get
End Get
Set(ByVal Value As String)
End Set
End Property
<Browsable(False)> _
Public Property Property2() As String
Get
End Get
Set(ByVal Value As String)
End Set
End Property
End Class
me gustaría hacer lo mismo en Objective-C, incluso si es un atributo fijo que sólo pueden establecerse en tiempo de compilación y no se puede cambiar en absoluto.
Lo que trato de hacer es agregar un atributo a las propiedades de mi clase para determinar si las propiedades deben ser serializadas o no.
Conozco los atributos estándar de Objective-C (solo lectura, no atómicos, etc.), pero esos no me ayudan ... a menos que tenga una forma creativa de usarlos. También analicé el uso de atributos C con la palabra clave __attribute__(("Insert attribute here"))
, pero C tiene atributos específicos que sirven para fines específicos, y ni siquiera estoy seguro de que pueda leerlos en tiempo de ejecución. Si pierdo uno que pueda ayudarme, házmelo saber.
Intenté usar typdef
. Por ejemplo:
typdef int serializableInt;
serializableInt myInt;
y usar la función de tiempo de ejecución property_getAttributes()
Objective-C, pero todo lo que me dice es que myInt es un int. Supongo que typedef es bastante parecido a una macro en este caso ... a menos que pueda crear una variable de tipo serializableInt en tiempo de ejecución. De todos modos, aquí está Apple's documentation en los valores que obtienes de property_getAttributes()
.
El otro requisito es que este atributo tenga que funcionar con las subclases de NSObject y con los tipos de datos primitivos. Pensé en la idea de agregar a la clase una lista negra o una lista blanca como un ivar que me dijera qué propiedades omitir o serializar, que es básicamente la misma idea. Solo intento mover esa lista negra/blanca a los atributos para que sea fácil de entender cuando vea el archivo de encabezado de una clase, es consistente en todas las clases que creo y es menos propenso a errores.
Además, esto es algo a tener en cuenta. Realmente no necesito el atributo para tener un valor (VERDADERO o FALSO; 1, 2, 3 o lo que sea) porque el atributo en sí es el valor. Si el atributo existe, serializar; de lo contrario, omita.
Cualquier ayuda es apreciada. Si está seguro de que esto no es posible en Objective-C, hágamelo saber. Gracias.
¿Qué hay de la creación de un método de clase que devuelve una matriz con el nombres de las variables de instancia serializables? –
Pensé en eso y es una solución perfecta. Pero mi pregunta es específicamente sobre la resolución de este problema con atributos. ¿Incluso existen atributos personalizados en Objective-C? – Roberto