Форум программистов, компьютерный форум, киберфорум
Наши страницы
Objective-C
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
4ep
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 4
1

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

12.02.2014, 12:07. Просмотров 779. Ответов 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
Ответы с готовыми решениями:

Свойства
Добрый день! У меня проект с ARC. Я задал свойство @property (nonatomic,strong)...

Видимость свойства
Всем привет! в Классе LoadingData.h @property (nonatomic, retain)...

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

ARC и свойства
Добрый день! Такой вопрос. В режиме ARC , в каких случаях нужно писать у...

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

3
zulkis
684 / 611 / 43
Регистрация: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.02.2014, 15:13

Size Classes и свойства frame/bounds у UIView
Всем привет! Решил в своем pet-проекте заюзать по-полной size classes, и...

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

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


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

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

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