屬性和成員變量都是類的構(gòu)成部分叽赊,用來保存類的數(shù)據(jù),要很好的理解他們他去,需要從一下幾個(gè)方面:
- 聲明方式
- 聲明的位置
- 作用域和訪問的方式
1. 聲明的方式
都可以在.h 和 .m 文件中聲明,注意修飾符。
Animal.m
@interface Animal ()
@property (nonatomic, strong) NSString *mName;
@end
@implementation Animal{
@public
NSString *mPublicMemberValue;
@private
NSString *mPrivateMemberValue;
@protected
NSString *mProtectedMemberValue;
@package
NSString *mPackageMemberValue;
}
-(void)showSomething{
NSLog(@"");
}
Animal.h
#import <Foundation/Foundation.h>
@interface Animal : NSObject{
@public
NSString *hPublicMemberValue;
@private
NSString *hPrivateMemberValue;
@protected
NSString *hProtectedMemberValue;
@package
NSString *hPackageMemberValue;
}
@property (nonatomic, strong) NSString *hName;
@end
Bird為Animal子類
Bird.h
#import "Animal.h"
@interface Bird : Animal
@end
Bird.m
#import "Bird.h"
@implementation Bird
-(void)birdShowSomething{
NSLog(@"");
}
@end
接下來我們從一下幾個(gè)地方看下對(duì)屬性的訪問
- 外部訪問屬性
- 外部訪問成員變量
- 子類訪問屬性
- 子類訪問成員變量
總結(jié)
- 成員變量通過->訪問咕幻, 屬性通過.訪問
- 在.h中聲明的屬性,可以被子類或外部訪問顶霞。
- 在.m中聲明的屬性肄程,外部(含子類)不可訪問。
- 在.h中聲明的成員變量:
修飾符 | 訪問方式 |
---|---|
@public | 都可訪問 |
@protected | 只有子類可訪問选浑,外部不可訪問 |
@private | 外部(含子類)不可訪問 |
@package | 同一個(gè)package下都可訪問 |
- 在.m中聲明的成員變量
外部(含子類)不可訪問