объявления свойств ios AppDelegate - PullRequest
4 голосов
/ 03 апреля 2012

Прочитав некоторые учебные пособия в Интернете, я увидел 2 разных способа объявления свойств. Мне интересно, если один из них более правильный, чем другой:

Вариант 1:

#import <UIKit/UIKit.h>

@interface AppDelegate : NSObject
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) UITabBarController *mytabs;

@end

Вариант 2:

#import <UIKit/UIKit.h>

@interface AppDelegate : NSObject {
UIWindow *window;
UITabBarController *mytabs;
}

@property (nonatomic, retain) UIWindow *window;
@property (nonatomic, retain) UITabBarController *mytabs;

@end

Ответы [ 3 ]

2 голосов
/ 03 апреля 2012

В первом варианте используется автоматический подсчет ссылок (ARC); второй нет. Ни один из них не является «более правильным», чем другой - первый просто более современный. Вы должны использовать ARC, если у вас нет веских причин не делать этого (например, из-за необходимости поддерживать устаревший код на устаревших платформах).

Вот ссылка , чтобы узнать больше об ARC.

1 голос
/ 03 апреля 2012

Опция 1 включает ARC. Начиная с iOS5 SDK, это опция по умолчанию в Xcode.

strong означает, что контроллер вида будет управлять этой переменной

Вот хороший ARC учебник для iOS5.

Опция 2 отключила автоматический подсчет ссылок. контроллер вида сохранит (увеличит счет сохранения), когда переменная будет установлена ​​

0 голосов
/ 03 апреля 2012

Раньше было необходимо явно объявить переменную экземпляра для поддержки каждого свойства.С «современной» средой выполнения это больше не требуется - ваша директива @synthesize для свойства позаботится о создании iVar, если он еще не существует.Некоторые люди до сих пор хранят объявление ivar, либо из-за предпочтений, либо из-за привычки, и, конечно, вы увидите, что ivars объявлен в старом коде.Одним из преимуществ этого является то, что вы можете легче видеть значения ваших свойств в отладчике.

Разница между использованием strong и retain заключается в использовании ARC или нет, соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...