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

Objective-C

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 49, средняя оценка - 4.84
Santer.Net
15 / 15 / 1
Регистрация: 18.11.2010
Сообщений: 122
#1

Объясните сущность self и super - Objective-C

22.09.2011, 09:04. Просмотров 6353. Ответов 7
Метки нет (Все метки)

Здравствуйте.
Возникло недопонимание указателей self и super.
self - это аналог this?Правильно? Т.е. Если например в С у нас есть метод и мы его хотим вызвать в другом методе то это будет выглядеть так
C
1
2
3
4
5
6
7
8
void Method1(int a,int b)
{
}
 
void Method2()
{
Method1(1,2);
}
То в Обжект си это будте :
Objective-C
1
2
3
4
-(void) Method2
{
[self Method2:2b:1];
}
Т.е. self нужен только для этого???
Объясните пожалуйста на примерах Си Шарпа или С++ предназначения self и super.
Заранее спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Splitter
201 / 143 / 5
Регистрация: 13.01.2009
Сообщений: 554
25.09.2011, 21:26     Объясните сущность self и super #2
в общем-то правильно, self указываем для обращения к собственным методам класса. Так же через селф можно образаться к полям класса, но тут вам лучше почитать про управление памятью
http://interfacelab.com/objective-c-...r-lazy-people/
так как в этом случае можем получить утечку из-за увеличения счетчика объектов в памяти...
rkorin
4 / 4 / 0
Регистрация: 05.09.2011
Сообщений: 19
03.10.2011, 00:28     Объясните сущность self и super #3
Self:
(on C#)
C#
1
2
3
4
5
6
7
8
9
10
11
public class MyClass
{
   MyClass self;   // <- member self
   public static MyClass Init()
{
   MyClass p = new MyClass();
   p.self = p;      // <- init this member 
   return p;
}
 
}
lexus_ilia
3045 / 921 / 34
Регистрация: 24.09.2008
Сообщений: 1,530
03.10.2011, 14:54     Объясните сущность self и super #4
А ничего сложного self указатель объекта класса самого на себя. super указатель на класс выше. Т.е. если у Вас объект от NSObject, то super'om можно вызывать (а в ините и нужно) методы. пример инита:
C++
1
2
3
4
5
6
-(id)init {
    if((self = [super init])) {
        //тут производите инициализацию стандартную для данного объекта.
        }
        return self;
}
Так же, например, обязательно вызывать в методе dealloc этот же метод у super'a:
C++
1
2
3
4
5
6
-(void) dealloc
{
    NSLog(@"[%@ dealloc]",[self class]);
    //удаляем (вызываем им release) все объекты, у которых retainCount > 1
    [super dealloc];
}
Ну как-то так.
OlgaOlgaOlga
0 / 0 / 0
Регистрация: 08.04.2012
Сообщений: 8
13.07.2012, 15:29     Объясните сущность self и super #5
Скажите, а почему тогда в реализации функции
-(void) update
нет его выборки из super ????
в стандартном коде OpenGL в секции @interface нет прототипа данной функции, следовательно она встроенная (определенная в классе выше) ???? я правильно понимаю?
EvilYarik
-6 / 3 / 0
Регистрация: 18.07.2012
Сообщений: 49
18.07.2012, 21:21     Объясните сущность self и super #6
это все связано с инициализацией переменных, выделением и очисткой памяти, тема деликатная так что тут на пост с форума рассчитывать не надо, тут нужна литература
материал есть на русском "Objective-C 2.0 и программирование для Mac" кажись 10ая глава, хоть лучше прочесть полностью
MadChild54
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 93
23.03.2014, 11:48     Объясните сущность self и super #7
Ребят, а на примере php можете написать как используется self и super, если это возможно?)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2014, 02:31     Объясните сущность self и super
Еще ссылки по теме:
Сущность БД и Primary key Java SE
Модель сущность - связь
VBA Сущность и назначение Which:=wdGoToFirst
SQL Server Сущность - связь в MS SQL
Hibernate как сохранить сущность Java EE

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

Или воспользуйтесь поиском по форуму:
Vorona
Peace 2 all shining faces
667 / 529 / 45
Регистрация: 05.03.2010
Сообщений: 1,273
25.03.2014, 02:31     Объясните сущность self и super #8
Цитата Сообщение от OlgaOlgaOlga Посмотреть сообщение
Скажите, а почему тогда в реализации функции
-(void) update
нет его выборки из super ????
в стандартном коде OpenGL в секции @interface нет прототипа данной функции, следовательно она встроенная (определенная в классе выше) ???? я правильно понимаю?
чаво

Цитата Сообщение от MadChild54 Посмотреть сообщение
Ребят, а на примере php можете написать как используется self и super, если это возможно?)
возможно разобраться с азами ооп и исчезнут вопросы такие глупые
Yandex
Объявления
25.03.2014, 02:31     Объясните сущность self и super
Ответ Создать тему
Опции темы

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