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

Objective-C

Войти
Регистрация
Восстановить пароль
 
4ep
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 4
#1

Свойства и переменные - Objective-C

12.02.2014, 12:07. Просмотров 702. Ответов 3
Метки нет (Все метки)

добрый день!
продолжаю учить obj c. Не понял один момент со свойствами.
кратко создал класс со свойствами и в main импортировал его.
Судя по поведению свойства могут использоваться без объявления переменных в классе.
Однако по книге которую изучаю свойства отчаянно дублируются переменными.
Вопрос как обычно зачем?

соб-но код main
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#import <Foundation/Foundation.h>
#import "vari.h"
 
int main(int argc, const char * argv[])
{
    vari *var1 = [[vari alloc] init];
 
    @autoreleasepool {
        [var1 setAVari:5];
        int a = [var1 AVari];
        
        NSLog(@" %d",a);
        
    }
    return 0;
}
объявление класса и свойства
Objective-C
1
2
3
4
5
6
#import <Foundation/Foundation.h>
 
@interface vari : NSObject
@property int AVari;
 
@end
ну и инициализация свойств
Objective-C
1
2
3
4
5
6
#import "vari.h"
 
@implementation vari
@synthesize AVari;
 
@end
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2014, 12:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Свойства и переменные (Objective-C):

Свойства - Objective-C
Добрый день! У меня проект с ARC. Я задал свойство @property (nonatomic,strong) UITableView *theTableView;. Синтезирировал его так...

ARC и свойства - Objective-C
Добрый день! Такой вопрос. В режиме ARC , в каких случаях нужно писать у свойства nonatomic, а в каких atomic? Смотрел документацию,...

Свойства класса - Objective-C
Здравствуйте! Пытаюсь разобраться со старым и новым способами записи свойств класса. Нашел здесь ссылку...

Видимость свойства - Objective-C
Всем привет! в Классе LoadingData.h @property (nonatomic, retain) NSMutableDictionary *indexFullData; в LoadingData.m @synthesize...

Size Classes и свойства frame/bounds у UIView - Программирование iOS
Всем привет! Решил в своем pet-проекте заюзать по-полной size classes, и столкнулся со следующей странностью: Для anyW &amp; anyH...

Как из одного ViewController изменить свойства другого? - Программирование iOS
Здравствуйте! У меня приложение на UITabBarController, я хочу чтобы если пользователь нажал кнопку в 1 вью, во втором отобразилась...

3
zulkis
682 / 609 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
12.02.2014, 12:20 #2
4ep, раньше для создания instance variable для свойства необходимо было писать директиву @synthesize, с указанием имени конкретного ivar-a, либо без:
Objective-C
1
@synthesize AVari;
Равно:
Objective-C
1
@synthesize AVari = _AVari;
Сейчас можно не писать @synthesize, если нет явной необходимости в назначении сеттера/геттера на ivar с другим именем:
Objective-C
1
@synthesize AVari = _someWellNamedIvar;
В данном случае _someWellNamedIvar должна быть объявлена в интерфейсе класса.

Цитата Сообщение от 4ep Посмотреть сообщение
Однако по книге которую изучаю свойства отчаянно дублируются переменными.
Вопрос как обычно зачем?
Вы ответите на вопрос сами, если этой книге больше 2х лет.
0
4ep
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 4
13.02.2014, 14:56  [ТС] #3
книга 2012 г. но это перевод видимо 2012 года.Получается изменились правила и теперь не надо дублировать?
проверил и вправду и synthesize даже не нужно писать. Понял что книга устарела.
0
glvrzzz
95 / 71 / 12
Регистрация: 12.12.2012
Сообщений: 214
13.02.2014, 15:13 #4
Ничего не дублируется. Когда, вы пишете @property, вы по сути объявляете 2 метода: геттер и сеттер (либо только геттер, если readonly). Емнип, до 4-го хcode, вам нужно было либо ручками имплементить эти методы, либо писать @synthesize, указывая, какому ivarу соответствует проперти, чтобы xcode сам сгенерил сеттер и геттер. Сейчас xcode все сам генерит, создавая по умолчанию ivar, который называет _имяПроперти.
0
13.02.2014, 15:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.02.2014, 15:13
Привет! Вот еще темы с ответами:

Глобальные переменные - Objective-C
доброго времени суток где можно объявить глобальную переменную? или лучше воспользоваться NSUserDefaults? что посоветуете?

Переменные внутри метода - Objective-C
Заметил такую вещь, что внутри метода создают временную переменную и присваивают ей значение уже существующей переменной, например есть...

Создание класса, хранящего переменные всего проекта - Objective-C
Здравствуйте! Хочу создать класс, чтоб в нём хранились переменные всего проекта. И читать их и менять значения из других классов. Типа как...

CSS: Переменные и свойства - HTML, CSS
Как в переменную задать значение, например, свойства height класса cl_i? то есть у меня есть .cl_i{height: 20px} и как мне в переменную...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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