我发现了一个奇怪的问题。
在这个例子中,Xcode5.0.2和iOS 7.0在"iPhone视网膜(4英寸)“模拟器上发生了一些不应该发生的事情。
UIView子类中的属性定义为:
@property (nonatomic, strong) EAGLContext *context;没有自定义的getter或setter。所以应该创建_context ivar。
看起来依瓦尔是存在的,但是当我赋值的时候,依瓦尔仍然是零。
self.context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1];
// breakpoint:
// "po [self context]" returns proper object.
// "po _context" returns nil这怎么可能呢?
为了排除冲突,我将属性重构为"context123“,但结果相同。LLDB调试器会显示_context123为nil。
我将立即回答这个问题。这是一个有趣的问题,其他人可能会发现它很有用。
发布于 2013-12-09 23:59:49
原因是一个子类意外地覆盖了这个属性。这会导致在子类中创建一个冲突的ivar,它的值隐藏在超类中的ivar。
https://stackoverflow.com/questions/20474911
复制相似问题