它和那么简单。

运行狮子。

  1. 我刚升级到xcode 4.4
  2. 加载了我最近的Xcode 4.3项目文件
  3. 注明了一个@synthesize代码行
  4. 和错误比比皆是。:(
  5. 验证编译器设置为“LLVM 4.0”。

    然后我做了相同的测试,但在Xcode 4.4和Voila中创建了一个新项目!自动@synthesize在4.4项目中工作。

    自动@synthesize 似乎在 new 属性上添加到代码中。但是现有的旧版本生成错误。

    其他人体验这个吗? 我应该检查的任何其他事情?

    我真的希望自动生成功能工作。

    谢谢。

有帮助吗?

解决方案

错误不是您声明属性的方式,但在您使用它的方式中。

自动合成属性通过默认创建带有的备份商店。

所以在您的代码中,您有一个属性声明为:

@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与属性有两个不同的东西。正确的答案是通过添加下划线来更改代码来正确使用ivar。

这不是严格的关于Xcode的默认属性综合化的变化。此外,在大多数样式指南中,您将阅读苹果劝阻_IVAR名称,以便我猜这是窗口。

在我的代码中我只使用self。当我打算通过Property Getter和Setter访问时。没有改变我的现有代码,为此行为浪费时间。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top