Форум программистов, компьютерный форум CyberForum.ru

Objective-C

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.86
Fennec
1 / 1 / 0
Регистрация: 10.02.2010
Сообщений: 36
#1

Как получить доступ к переменным объекта класса-родителя? - Objective-C

07.06.2012, 19:31. Просмотров 2613. Ответов 6
Метки нет (Все метки)

Я знаю, что обычно передают указатель на объект класса в функцию чайлда, но вот как это сделать на ObjC никак не могу понять.

Попытался сделать так
Objective-C
1
-(void) initBubble:(HelloWorldLayer)parentObj;
Но компиллер заругался. Как это вообще лучше сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2012, 19:31     Как получить доступ к переменным объекта класса-родителя?
Посмотрите здесь:
Objective-C Как получить доступ к изменению переменной из другого класса?
Как сделать доступ к элементам массива по индексу и по литералу индекса? Objective-C
Как получить доступ к переменным извне класса? PHP ООП
C++ Qt Как получить доступ к переменным одного класса из методов другого
C# Получить доступ к переменным списка другого класса
Как получить доступ к методам объекта класса наследуемого от Activity, когда он выводится во вкладку Android
Java SE Как заставить вызвать метод класса-родителя для объекта (полиморфизм)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
08.06.2012, 05:34     Как получить доступ к переменным объекта класса-родителя? #2
Что Вам нужно сделать?
Если вы передадите указатель на объект в другой объект при его создании - он не будет его "родителем", даже если он таким является по иерархии наследования. Вам следует почитать что такое родительский класс.

Also, init должен возвращать как минимум (id).

Для создания класса используйте конструкцию


Objective-C
1
2
3
4
5
6
7
- (id)init {
   self = [super init]; //super - всегда родительский класс текущего.
   if (self) {
 
   }
   return self;
}
А компилятор ругается видимо на (HelloWorldLayer*) - не?
Fennec
1 / 1 / 0
Регистрация: 10.02.2010
Сообщений: 36
08.06.2012, 11:23  [ТС]     Как получить доступ к переменным объекта класса-родителя? #3
Сейчас попробую объяснить еще раз ) Вобщем я на коксе пишу штуковину. У меня вот этот самый Хеллоу Ворлд слой добавляет себе спрайт. Не через наследование, то есть класс не расширяется от родительского. То есть отношение не типа super -> subclass, а parent -> child.

Я просто только-только перекочевал с AS3 на Обджектив, все очень непривычно ) Так вот, проведу аналогию чего я хочу добиться
например у нас есть главный класс который добавляет себе чайлда как объект отображения, а для того, чтобы чайлд имел доступ к свойствам пэрента мы передаем чайлду ссылку на него в его метод-конструктор.
ActionScript 3
1
2
3
4
5
6
7
8
9
10
public class Main
{
    public var bubbles:Array = new Array();
 
    public function Main()
    {
        var bubble:Bubble = new Bubble(this);
        addChild(child);
    }
}
Ну и код чайлда

ActionScript 3
1
2
3
4
5
6
7
public class Bubble
{
    public function Bubble(parentObject:Main)
    {
        trace(parentObject.bubbles);
    }
}
Вот мне надо такую же штуковину сделать на Обджектив Си )
Santer.Net
15 / 15 / 1
Регистрация: 18.11.2010
Сообщений: 122
11.06.2012, 11:19     Как получить доступ к переменным объекта класса-родителя? #4
То что Вы пытались сказать называется композиция.
А что бы ее достичь не обязательно передавать данный параметр в конструкторе. Можно просто создать property в классе, а потом ему установить тот объект который вам нужен.
Хотя можно это и через конструктор сделать, но теряется гибкость.

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@interface Child:NSObject
 
@property(nonatomic,retain) YourParentClass *parObj;
//2 способ, через конструктор
-(id) initWitParentClass:(YourParentClass *) someParObj;
@end
 
@implementation Child
 
@synthesize parObj;
 
-(id) initWitParentClass:(YourParentClass *) someParObj
{
   self=[super init];
    if(self)
    {
      self.parObj=someParObj;
     }
   return self;
}
@end
Objective-C
1
2
3
4
5
YourParentClass *po=[YourParentClass alloc] init];
Child *chl=[Child alloc] init];
//1 способ
[chl setYourParentClass:po];
[po release];
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
11.06.2012, 12:14     Как получить доступ к переменным объекта класса-родителя? #5
Santer.Net, Я бы сказал что композиция с Parent классом неуместна.
Ибо
Objective-C
1
@property(nonatomic,retain) YourParentClass *parObj;
Нехорошо ретейнить родителя предком, очень нехорошо, я думаю не стоит объяснять почему.

В нашем случае это максимум агрегация, то есть не retain, а assign.
Как то так. Если имеются контра аргументы - прошу )
Santer.Net
15 / 15 / 1
Регистрация: 18.11.2010
Сообщений: 122
11.06.2012, 12:44     Как получить доступ к переменным объекта класса-родителя? #6
Я полностью согласен. Не досмотрел с ретеин(((
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2012, 18:23     Как получить доступ к переменным объекта класса-родителя?
Еще ссылки по теме:
C# Как получить доступ к переменным из if
Java Как получить доступ к системным переменным?
C++/CLI Как получить доступ к переменным, объявленным в Main()
Бинарное дерево подклассов основного класса-узла. Доступ к подклассам по указателю - объекту класса-родителя C++
C++ Доступ к переменным класса

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Fennec
1 / 1 / 0
Регистрация: 10.02.2010
Сообщений: 36
13.06.2012, 18:23  [ТС]     Как получить доступ к переменным объекта класса-родителя? #7
Уже успел разобраться, нов се равно спасибо )
Yandex
Объявления
13.06.2012, 18:23     Как получить доступ к переменным объекта класса-родителя?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru