XCODE 4.4 AUTO @SYNTHESIZE Неспособность к проекту Xcode 4.3

StackOverflow https://stackoverflow.com//questions/11709210

  •  13-12-2019
  •  | 
  •  

Вопрос

Это так просто, как это.

бегущий лев.

  1. Я просто обновился до xcode 4.4
  2. загрузил мой последний файл проекта xcode 4.3
  3. прокомментировал одну @synthesize линейку кода
  4. и ошибки изобилуют.: (
  5. Проверенный компилятор устанавливается на '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.Не изменять свой существующий код для этого поведения, его пустая трата времени.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top