XCODE 4.4 AUTO @SYNTHESIZE Неспособность к проекту Xcode 4.3
-
13-12-2019 - |
Вопрос
Это так просто, как это.
бегущий лев.
- Я просто обновился до xcode 4.4
- загрузил мой последний файл проекта xcode 4.3
- прокомментировал одну @synthesize линейку кода
- и ошибки изобилуют.: (
Проверенный компилятор устанавливается на 'llvm 4.0'.
Тогда я сделал тот же тест, но создал новый проект в XCode 4.4, и Voila!AUTO @SYNTHESIZE работает в проекте 4.4.
AUTO @SYNTHESIZE также, кажется, работает на новых свойствах , добавленным в код.Но существующий старый генерирует ошибку.
Кто-нибудь еще испытывает это? Любые другие вещи, на которые я должен проверить?
Я действительно хочу работать функции автоматического поколения.
спасибо.
Решение
Ошибка не так, как вы объявляете свойство, но так, как вы его используете.
Автоматические синтезированные свойства Создают сохраняющий хранилище с помощью
Так что в вашем коде, когда у вас есть свойство, объявленное как:
@property (nonatomic, strong) UILabel *sectorLabel;
.
и вы автоматически Sythesize - что-то вроде это автоматически генерируется для вас компилятором:
@synthesize sectorLabel = _sectorLabel;
.
Теперь вы можете получить доступ к нему через свойство:
self.sectorLabel;
.
Или, вы можете получить доступ к хранилищу поддержки непосредственно с:
_sectorLabel;
. Другие советы
решил это!
Так что это то, что я сделал.
<Сильные> ViewController.h
@interface ViewController : UIViewController
// Public:
@property (nonatomic, strong) UILabel *sectorLabel;
@end
.
<Сильные> ViewController.m
@implementation ViewController
//@synthesize sectorLabel;
.
, а затем эта ошибка выскочила.
ViewController.M: 48: 2: использование незаменимого идентификатора «SectorLabel»;сделал Вы имеете в виду «_sectorLabel»?
Это разрешило момент, когда я изменил код:
self.sectorLabel
.
XCode 4.3 скомпилирован и работал нормально без необходимости иметь «я».ключевое слово.Но XCode 4.4, кажется, стал более строгим об этом.
Проблема с принятым ответом заключается в том, что вы просто изменили поведение вашего кода, добавив Self.Property.
Доступ к иверу против свойства - это две разные вещи.Правильный ответ будет изменять код, чтобы правильно использовать IVAR, добавив подчеркивание.
Это не острое значение его при изменении к синтезации свойства по умолчанию для XCODE.Кроме того, в большинстве стильных руководств вы прочтете, что Apple отговаривает имена _ivar, поэтому я думаю, что это из окна.
в моем коде я использую только себя.Когда я собираюсь получить доступ через свойство Getter и Setter.Не изменять свой существующий код для этого поведения, его пустая трата времени.