Objective c 实例属性的概念

Objective c 实例属性的概念,objective-c,ios,cocoa-touch,Objective C,Ios,Cocoa Touch,请你打破我的困惑好吗 如果我在类中定义一个属性 @interface Class { UIScrollView * _scrollView; } @property (nonatomic, retain) IBOutlet UIScrollView * scrollView; @end @implement @synthesize scrollView = _scrollView; @end 当我想要实现它时,我可以使用 _scrollView.contentSize = xxx 或

请你打破我的困惑好吗

如果我在类中定义一个属性

@interface Class
{
  UIScrollView * _scrollView;
}
@property (nonatomic, retain) IBOutlet UIScrollView * scrollView;
@end

@implement
@synthesize scrollView = _scrollView;
@end
当我想要实现它时,我可以使用

_scrollView.contentSize = xxx

这两种描述有什么区别



感谢您的回答…

对实例变量的直接引用就是对实例中某个字段的引用,不受它也是属性的“后备存储”这一事实的影响

另一方面,
self.propName
引用是
[self-propName]
(如果读取)或
[self-setPropName:newPropValue]
(如果设置)的简写。也就是说,这些引用通过访问器方法进行。如果属性被定义为
assign
,那么这并不重要,但是如果它是
retain
,那么setter方法会处理所有的retain逻辑

此外,您可以实现自己的属性访问器--
-(SomeType*)propName{…}
-(void)setPropName:(SomeType*)propParm{…}
--如果您想让它们执行一些特殊的操作,例如“惰性”初始化


(另外,属性默认为“public”访问,而实例变量默认为“private”访问。)

Hot-Licks的答案是正确的。您可能还对这个答案感兴趣,以帮助澄清问题。
self.scrollView.contentSize = xxx