У меня есть инициализатор singleton, который является методом класса. Я хочу установить данные переменной экземпляра из него. Как я могу это сделать?Как установить переменную экземпляра из метода класса в ObjC
ответ
Доступ к переменным экземпляра возможен с помощью оператора указателя на структуру.
Вам не нужно свойство для этого:
+ (MyClass *)sharedInstance
{
@synchronized(self)
{
if(instance == nil)
{
instance = [ [ self alloc ] init ];
instance->iVar = @"someValue";
}
}
return instance;
}
Вам нужен экземпляр для вызова метода экземпляра. Итак, создайте экземпляр и вызовите его методы или используйте методы класса.
Должен ли я изменить эти методы экземпляра быть классными методами?
Если методы не связаны с экземпляром, может быть хорошей идеей изменить их на методы класса.
Спасибо. Я могу вызвать методы экземпляра из метода класса, это переменные экземпляра, которые дают мне проблемы. Как установить значения для переменных экземпляра в методе класса? Как я могу объявить эти переменные, чтобы их можно было использовать в методе класса? – Spanky
Ну, так как ваш класс является одноэлементным, вы можете его создать, а затем получить доступ к его переменным экземпляра. Если это не вариант для вас, единственное другое решение, о котором я могу думать, это использовать статические переменные, которые обычно уродливы. – zvone
Этот метод инициализации для примера. Это так, как я это делаю ...
-(id)initWithName:(NSString *)name {
if(self = [super init]) {
self.name = name;
}
return self;
}
В этом случае переменной экземпляра также должно быть свойство. Иначе вы не можете написать self.name
.
Сандро
Groovy, но ваш метод является методом экземпляра «-», я пытаюсь получить доступ к переменным экземпляра из метода класса «+». – Spanky
Чем я не знаю, что вы имеете в виду. Вы хотите установить переменную экземпляра? Это возможно. (См. Пример ниже). Но если вы хотите получить доступ к нему, это невозможно. Потому что они не существуют в классе. Они существуют только в объекте ... Пример:
+(YourClass *)YourClassWithName:(NSString *)name {
if(self = [super init]) {
self.name = name;
}
return [self autorelease];
}
Если вы не имели в виду, что я не знаю, что вы имели в виду. ^^
- 1. Как установить переменную экземпляра из метода класса?
- 2. Как установить атрибут класса из метода экземпляра в python?
- 3. Как изменить переменную экземпляра из статического метода?
- 4. Невозможно вызвать переменную экземпляра класса внутри метода
- 5. XCODE AppelScript ObjC: установить переменную
- 6. Ruby: Как установить переменные экземпляра из метода класса?
- 7. Как увеличиваем переменную экземпляра из метода
- 8. Как установить частную переменную экземпляра, используемую в тесте метода?
- 9. вызова метода экземпляра из метода класса
- 10. Вызов метода класса из метода экземпляра
- 11. как метод доступа класса из метода экземпляра
- 12. Как вызвать метод экземпляра из метода класса?
- 13. экземпляра и класса методы, интерфейс ObjC
- 14. Ruby: проблема вызова класса экземпляра из метода
- 15. Использовать переменную из экземпляра класса в конвертере?
- 16. Как искушать переменную экземпляра класса?
- 17. Объем переменной экземпляра метода класса
- 18. Вызов метода экземпляра класса
- 19. Как установить переменную экземпляра в декораторе?
- 20. PHP - Как вернуть переменную из метода класса?
- 21. Срок жизни экземпляра объекта в ObjC
- 22. Установить переменную класса из модуля
- 23. Как установить переменную экземпляра активности в onPostExecute?
- 24. Как получить имя метода класса/экземпляра JavaScript из метода?
- 25. Как установить переменную экземпляра в модели Eloquent?
- 26. PHP объявить переменную класса из другого экземпляра
- 27. Как установить динамическую переменную public при создании экземпляра класса
- 28. Установить переменную класса из другого класса
- 29. Создание экземпляра внутреннего класса из основного метода
- 30. получить переменную экземпляра из другого класса?
Это работает, спасибо :) – Spanky