Похоже, вы пришли из фона типа Java / C #, где ограничения могут быть наложены на коллекции.
Коллекции в Какао не следуют этому шаблону. Нет никакого способа установить ограничение на то, какие типы объектов могут быть вставлены (если вы не напишите класс-оболочку, который обеспечивает это).
Objective-C, по замыслу, следует философии "если он ходит как утка и крякает как утка, то, скорее всего, это утка". То есть вместо того, чтобы проверять, является ли объект определенным типом, вы должны проверять, может ли он делать то, что вы хотите, независимо от его типа.
Вы можете сделать это, используя respondsToSelector:
.
Наконец, ваша проблема на самом деле не связана с тем, что массив не имеет ограничений. Похоже, ваш объект не объявляет переменную экземпляра value
как свойство или предоставляет какие-либо методы доступа для него.
Вот почему вы видите ошибку при попытке myObject.value
. Этот синтаксис в Objective-C - это способ доступа к свойствам.
Область по умолчанию для переменных экземпляра в Objective-C - @protected
, что означает, что что-либо вне вашего класса не может получить к ним доступ, не пройдя какой-либо метод доступа.
Вам необходимо объявить и определить методы - (UInt8)value
и - (void)setValue:(UInt8)aValue
и использовать их.
Кроме того, вы можете объявить его как свойство.