Форум программистов, компьютерный форум 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. Просмотров 6507. Ответов 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.
Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2011, 09:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Объясните сущность self и super (Objective-C):

Объясните сущность и функцию? - SEO
Что обозначают следующие понятия и какую роль они играю на странице сайта? Мета-ключи Мета-тег описания Ключевые слова ...

классы и сущность - C++
Написать программу с конструкторами и диструкторами, сущность мотоциклы... Кто знает как подскажите? есть какой нибудь пример похожий...

Нужна ли сущность? - SQL Server
Здравствуйте! В БД есть две сущности, они почти идентичны, на рисунке красным выделены одинаковые атрибуты. Так вот, нужно ли мне...

JPA, сущность из базы - Java EE
NetBeans генерит сущность из базы. Есть методы геттеры и сеттеры. В аннотациях написаны методы типа findAll(), findBy... Так вот - они мне...

Получить сущность связыванием - Java EE
Здравствуйте. Просьба помочь и подсказать с заданием. Задача создать java web приложение по обмену дисков. У каждого пользователя есть...

Сущность БД и Primary key - Java SE
Сгенерил сущность таблицы в БД. В этой таблице есть колонки с Primary Key. В сгенерированой сущности нет метода типа getColumnPK(). Можно...

7
Splitter
201 / 143 / 5
Регистрация: 13.01.2009
Сообщений: 554
25.09.2011, 21:26 #2
в общем-то правильно, self указываем для обращения к собственным методам класса. Так же через селф можно образаться к полям класса, но тут вам лучше почитать про управление памятью
http://interfacelab.com/objective-c-...r-lazy-people/
так как в этом случае можем получить утечку из-за увеличения счетчика объектов в памяти...
1
rkorin
4 / 4 / 0
Регистрация: 05.09.2011
Сообщений: 19
03.10.2011, 00:28 #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;
}
 
}
0
lexus_ilia
3046 / 706 / 34
Регистрация: 24.09.2008
Сообщений: 1,530
03.10.2011, 14:54 #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];
}
Ну как-то так.
0
OlgaOlgaOlga
0 / 0 / 0
Регистрация: 08.04.2012
Сообщений: 8
13.07.2012, 15:29 #5
Скажите, а почему тогда в реализации функции
-(void) update
нет его выборки из super ????
в стандартном коде OpenGL в секции @interface нет прототипа данной функции, следовательно она встроенная (определенная в классе выше) ???? я правильно понимаю?
0
EvilYarik
-6 / 3 / 0
Регистрация: 18.07.2012
Сообщений: 49
18.07.2012, 21:21 #6
это все связано с инициализацией переменных, выделением и очисткой памяти, тема деликатная так что тут на пост с форума рассчитывать не надо, тут нужна литература
материал есть на русском "Objective-C 2.0 и программирование для Mac" кажись 10ая глава, хоть лучше прочесть полностью
0
MadChild54
1 / 1 / 0
Регистрация: 04.06.2013
Сообщений: 93
23.03.2014, 11:48 #7
Ребят, а на примере php можете написать как используется self и super, если это возможно?)
0
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,283
25.03.2014, 02:31 #8
Цитата Сообщение от OlgaOlgaOlga Посмотреть сообщение
Скажите, а почему тогда в реализации функции
-(void) update
нет его выборки из super ????
в стандартном коде OpenGL в секции @interface нет прототипа данной функции, следовательно она встроенная (определенная в классе выше) ???? я правильно понимаю?
чаво

Цитата Сообщение от MadChild54 Посмотреть сообщение
Ребят, а на примере php можете написать как используется self и super, если это возможно?)
возможно разобраться с азами ооп и исчезнут вопросы такие глупые
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2014, 02:31
Привет! Вот еще темы с ответами:

Сущность и назначение Which:=wdGoToFirst - VBA
Which:=wdGoToFirst - а зачем оно надо и чего оно делает? Вот такой вопрос))

Модель сущность-связь - Базы данных
Задание: Разработка базы данных и интерфейса пользователя для информационной системы обувного магазина, реализующей следующие...

Сущность - связь в MS SQL - SQL Server
Доброго времени суток. Подскажите пожалуйста, как сделать сущность связь для: Есть клиент, у клиента есть личный номер телефона и...

Модель сущность - связь - Базы данных
Помогите определить, верна ли составлена ER-диаграмма


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

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
25.03.2014, 02:31
Ответ Создать тему
Опции темы

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