Можно ли создавать атрибуты пользовательских свойств в Objective-C так же, как в VB.NET? Например, в VB.NET вы можете создать атрибут «Browsable» и прочитать его во время выполнения, чтобы определить, следует ли отображать свойство или нет.
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
Я хотел бы сделать то же самое в Objective-C, даже если это фиксированный атрибут, который может быть установлен только во время компиляции и не может быть изменен вообще.
Я пытаюсь добавить атрибут в свойства моего класса, чтобы определить, следует ли сериализовать свойства или нет.
Я знаю стандартные атрибуты Objective-C (только для чтения, неатомные и т. Д.), Но они мне не помогают ... если у вас нет творческого подхода к их использованию. Я также рассмотрел использование атрибутов C с ключевым словом __attribute__(("Insert attribute here"))
, но у C есть определенные атрибуты, которые служат определенным целям, и я даже не уверен, что вы можете прочитать их во время выполнения. Если я пропустил тот, который может мне помочь, дайте мне знать.
Я пытался использовать typdef
. Например:
typdef int serializableInt;
serializableInt myInt;
и используйте property_getAttributes()
функцию времени выполнения Objective C, но все, что она говорит мне, это то, что myInt является int. Я предполагаю, что typedef очень похож на макрос в этом случае ... если только я не могу создать переменную типа serializableInt во время выполнения. В любом случае, вот документация Apple о значениях, которые вы получаете из property_getAttributes()
.
Другое требование заключается в том, что этот атрибут должен работать с подклассами NSObject, а также с примитивными типами данных. Я подумал об идее добавления в класс черных списков или белых списков в виде ивара, который сообщит мне, какие свойства пропустить или сериализовать, что в принципе является той же идеей. Я просто пытаюсь переместить этот черный / белый список в атрибуты, чтобы его было легко понять, когда вы видите заголовочный файл класса, он одинаков для всех создаваемых классов и менее подвержен ошибкам.
Кроме того, это то, что нужно учитывать. Мне действительно не нужно, чтобы атрибут имел значение (ИСТИНА или ЛОЖЬ; 1, 2, 3 или что-то еще), потому что сам атрибут является значением. Если атрибут существует, то сериализуйте; в противном случае пропустите.
Любая помощь приветствуется. Если вы точно знаете, что это невозможно на Objective-C, дайте мне знать. Спасибо.