私有财产声明为:
@interface Camera ()
{
SE3 *_transformationFromWorld;
}
@end
在Camera
对象初始化时分配:
self = [super init];
SE3 *transformation = [[SE3 alloc] initWithRotation:R withTranslation:T];
_transformationFromWorld = transformation;
[self initIntrinsics];
return self;
但是在调试器窗口中我可以看到它仍然是nil
,而transformation
对象是正常分配的。 (我扩展了代码以检查它不是SE3
初始化方法返回nil
)
这怎么可能?
SOLUTION:
@Shahar的评论向我指出了正确的方向。当我像这样声明属性时(总是在.m文件中):
@interface Camera ()
@property SE3 *transformationFromWorld;
@end
它神奇地工作了。有人在解释这种声明属性和前一种属性的区别吗?