2

所以这很奇怪。

我有一个财产:

@property (weak, nonatomic) Something *something; // .h
@synthesize something=_something                  // .m

出于某种原因,设置该属性并没有保持_something设置。

我什至写了一个setter:

- (void)setSomething:(Something *)something {
    _something = something;
}

传递something的是对象的有效实例。但是,在单步执行之后_something = something, ,_something是 nil 并且something仍然是一个有效的对象。

这让我抓狂,因为一切对我来说都是正确的。类似的东西我已经写了一千遍了。唯一新的是这是在 Xcode 4.3 中。

任何帮助,将不胜感激。谢谢!

ETA:所以,也许这是一个暗示?viewDidLoad 被称为一个完整的时间,每批 4 个。我正在使用情节提要,因此视图会自动正确设置。也许视图控制器没有正确加载或初始化或什么?我已经设置好了课程,一切看起来应该可以正常工作,但事实并非如此。

4

2 回答 2

4

好的,我想通了。我不确定这个方法是从哪里来的,但这是在 SomethingViewControler 代码中:

- (void)loadView {
    // If you create your views manually, you MUST override this method and use it to create your views.
    // If you use Interface Builder to create your views, then you must NOT override this method.
}

因为我使用的是故事板,所以这种方法的存在引起了各种各样的问题。我很尴尬,因为我可能不假思索地从某个地方复制并粘贴了它。

无论如何,我希望这对某人有所帮助。它只杀死了我一天的大部分时间。

于 2012-02-19T23:16:28.307 回答
0

也许您分配给该属性的东西没有从其他任何地方指向。因此,在分配之后,指向该对象的唯一指针是您的属性,并且是一周,因此该对象被抛出堆外

于 2012-02-19T22:28:40.490 回答