2014-02-01 2 views
1

У меня есть мои константы и пользовательские перечисления в отдельном файле .h. Файл является подклассом NSObject.Нет метода setter для назначения свойства

typedef NS_ENUM(NSInteger, MyEnumName) { 
    EnumValueOne, 
    EnumValueTwo 
}; 

В другом классе, который также является подкласс NSObject, у меня есть свойство для указанного перечисления.

@property (assign, nonatomic) MyEnumName hello; 

И в его файле реализации, я пытаюсь установить его значение, как это так,

self.hello = EnumValueTwo; 

Но я получаю сообщение об ошибке на этой линии говоря,

Нет метод установки " setHello: 'для присвоения собственности

Я попытался объявить метод setter вручную для этого свойства, но он все еще не работает.

Если я делаю то же самое внутри контроллера вида, он отлично работает. Невозможно сделать это в подклассе NSObject.

Может кто-нибудь сказать мне, почему это так и как исправить?

спасибо.

+0

Просьба показать весь контекст, в котором вы говорите 'self.hello' – matt

+0

На самом деле ничего более. Я просто пытаюсь установить значение этого свойства в методе. У всего тела метода есть только эта строка кода. – Isuru

+0

Вы @synthesize привет? Нужно это с более старыми версиями компилятора – matt

ответ

1

в примере проекта, который вы пытаетесь называть самим собой в методе класса .. это вы проблема r, а не перечисление. вы не можете получить доступ к собственной или любой переменной экземпляра из метода класса.

+0

Есть ли другой способ установить значение свойства в методе класса вообще? Или делает метод методом экземпляра единственным вариантом? – Isuru

+2

Свойства - это средство обеспечения доступа к переменным экземпляра. поэтому, если у вас нет экземпляра, у вас явно нет переменных экземпляра. зависит от ваших потребностей, вы можете использовать статическую переменную, доступ к которой вы можете получить из методов экземпляра или класса. – Eyal

+2

@Isuru И действительно, именно это я и предполагал, когда я попросил контекст. Именно туда я и ходил все это время. Все, что вам нужно было сделать, это показать мне фактическое объявление метода. Это хорошая идея сотрудничать с теми, кто пытается вам помочь. – matt