首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >窗口= _window

窗口= _window
EN

Stack Overflow用户
提问于 2011-10-12 13:17:02
回答 4查看 1.1K关注 0票数 2

我已经为iPhone编写了一些关于核心数据的教程,但似乎都不起作用。幸运的是,其中一个教程站点提供了源代码和一个不断弹出的问题(希望这是解释为什么所说的教程不起作用),是这样的:

代码语言:javascript
复制
@synthesize window = _window;

大约有半打这样的合成会在我的表视图文件中自动生成,但没有一个教程使用它们,这给我带来了一大堆错误。工作源代码中的行是:

代码语言:javascript
复制
@synthesize window;

那么,这是为什么?我在网上读到@synthesize的第一个版本是用于内存管理的,但似乎没有人使用它。

EN

回答 4

Stack Overflow用户

发布于 2011-10-12 13:36:47

这里唯一的区别是实例变量在自动生成时的命名方式。

在此版本中:

代码语言:javascript
复制
@synthesize window = _window;

您实际上得到了这些(假设您没有将@property设置为readonly):

代码语言:javascript
复制
UIWindow *_window;
- (UIWindow *)window;
- (void)setWindow:(UIWindow *)aWindow;

使用其他版本:

代码语言:javascript
复制
@synthesize window;

你会得到这个:

代码语言:javascript
复制
UIWindow *window;
- (UIWindow *)window;
- (void)setWindow:(UIWindow *)aWindow;

第二个版本相当于:

代码语言:javascript
复制
@synthesize window = window;
票数 1
EN

Stack Overflow用户

发布于 2011-10-12 13:41:55

像这样的语句:

代码语言:javascript
复制
@synthesize window = _window;

表示window是映射到实例/成员变量_window的属性。

Whera

代码语言:javascript
复制
@synthesize window;

等同于

代码语言:javascript
复制
@synthesize window = window;
票数 1
EN

Stack Overflow用户

发布于 2011-10-16 04:50:07

我在学习教程时也遇到了同样的问题。

对于我的东西,我可以用最小的改动让它工作的方法是在头文件接口部分添加UIWindow *window;,因为这不是由Xcode自动添加的,而是教程中的东西所期望的。

然后,我更改了它调用

代码语言:javascript
复制
[window addSubview:tabBarController.view];

代码语言:javascript
复制
[self.window addSubview:tabBarController.view];

现在,这似乎起作用了。我正在阅读的教程是基于上一版本的Xcode,所以我认为事情已经发生了变化。Xcode行不是自动添加的,并且UIWindow已经开始使用_window实现自己的功能。

喜欢它的人可以给出一个更清晰的解释,因为我在这里有点摸不着头脑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7735550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档