@property
之前每声明一个实例变量都要进行设置响应的set /get 方法;通过property来声明可以不用写了;编译器会将方法(set/get)和实例变量声明好。
@property NSString *itemName;
如果set get方法中有逻辑,需要在类的实现文件中添加自定义的set get方法
self:
1.self是什么鬼? super 又是什么鬼? [super init]???又特么啥玩意?
@implementation Son : Father
-(id)init
{
self=[super init ] ;
if(self){
}
return self ;
}
子类实现初始化之前调用父类的init 实现
1.self 和 super 究竟啥玩意?
1.1
动态方法中,self 表示 “对象”
静态方法中,self表示 “类”
一句话KO: self 就是当前方法的调用者
########self 是类隐藏的参数变量 指向当前方法调用的对象(类是特殊的对象)
1.2
然而super只是一个编译器指示符
2.[super init] 在上面程序中又搞了哪些小动作?
其实就是当前类或者对象
例如:
@interface Father :NSObject
-(void)currentClass;
@end
@implementation Father
-(void)printCurrentClass{
NSLog(@"Father current class is %@",[self class]);
@end
//:然后再有一个类继承至Father
@interface Son : Father
-(void)printCurrentClass;
@end
//:拥有一个相通的方法 检测两者输出的类是否相同
@implementation Son
-(void)printSuperClass{
[super PrintCurrentClass];
}
@end
//:测试
Son*son=[Son alloc]init];
[son printCurrentClass]; //直接调用父类方法
[son printSuperClass]; //间接调用父类方法
//:当然输出的结果可想而知都是Son