self. 和 self->的区别?
- self. 是调用get方法
- Self. 是当前本身,是一个指向当前对象的指针
- self->是直接访问成员变量
成员属性和成员变量的区别
@interface Log : NSObject
{
@protected
NSString* documentsDirectory; //成员变量
NSString* fileName;
}
@property (copy) NSString* documentsDirectory; //成员属性
@property (copy) NSString* fileName;
成员属性 @property 在编译时会做以下三个动作
- 自动生成get
- 自动生成set方法
- 生成成员变量_documentsDirectory,即成员变量名前加个底杠
由此可见,成员属性包含了成员变量
所以调用成员变量就是用self->调用,即self->documentsDirectory,
调用成员属性用self.调用,即self.documentsDirectory,如果想用self->调用成员属性就只能self->_documentsDirectory,这样调用太麻烦,一般会再用@synthesize对带底杠的成员属性名重新定名
@synthesize fileName, documentsDirectory
这样就可以直接访问成员属性名self->documentsDirectory
更详细的逻辑请参考这篇文章
网友评论