A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 天鹰的空 中级黑马   /  2015-8-18 21:15  /  584 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//------------------文档安装和方法重载:
1. 在线安装
xcode-> 系统偏好设置->Doucument->下载

2. 离线安装


第三方软件:dash

3. 方法重载:  是指在一个类中定义多个同名的方法
在OC中没有重载


//---------------static关键字:
1. 在c语言中  static可以修饰
局部变量(延长局部变量的生命周期)、
全局变量(当前变量只能再当前文件中使用)
函数(当前函数只能再当前文件中使用)

2. 在OC中, 不能用来修饰实例变量和方法, 但是可以修饰局部变量, 全局变量


//-------------------self的理解
self和super:

self理解:自己   谁调用当前方法, self就代表谁.

super代表的是当前类的父类.

//----------------self使用在对象方法
比如: 在对象方法中,self代表的是调用当前方法的对象,只有对象才可以调用对象方法


//----------------self使用在类方法中
在类方法中,  self代表的是当前类,只有类名才可以调用类方法.


获取当前对象的类:  Person *p = [Person new];
[p class] = [Person class] = Person
返回当前类


//---------------self访问成员变量
在对象方法中可以通过 self->_speed访问成员变量.


注意:  在对象方法中不要使用self调用自身方法
       在类方法中不要使用self调用自身方法

//-------------self调用方法
[self 方法名称]; (类方法/对象方法)


//--------------继承和派生:
继承格式:
@interface Cat : Animal

@end

子类拥有父类的所有属性和方法

继承定义:  子类拥有了属性和方法.

派生:   父类向下产生子类的过程称为派生


派生类拥有基类的属性和方法,还有自己派生的新增的属性和方法

方法重写:把父类的方法,在子类中重新给实现了


继承的注意事项:
1. 子类不能定义和父类同名的变量,但是可以继承父类的变量

2. OC类支持单一继承,不支持多继承

3. OC类支持多层继承

//-----------------继承体系中方法调用的顺序
1、在自己类中找
2、如果没有,去父类中找
3、如果父类中没有,就去父类的父类中
4、如果父类的父类也没有,就还往上找,直到找到基类(NSObject)
5、如果NSObject都没有就报错了



//-------------实例变量修饰符:
作用范围:
@public(公开的) :        作用于所有的类
@protected(受保护的):    作用于当前类,子类(派生类)
@private(私有的):        作用于当前类
@package(框架级别的):     作用于框架级别的


//--------------私有变量&私有方法:
默认情况下实例变量属于@protected修饰.


私有变量定义格式:
在.m文件当中定义
@implementation Person : NSObject
{
    int  age;   //  私有变量
}

// 不在.h文件中声明,  只在.m文件中实现
-(void)run{

    NSLog(@"我是私有方法");
}
@end

私有方法只能在当前文件中使用,  不能被子类继承.


//----------------description方法
1. description方法默认返回对象的描述信息(默认实现是返回类名和对象的内存地址) ;

NSLog(@"%@", objectA);这会自动调用objectA的descriptong方法来输出ObjectA的提述信息,

2. 重写description方法:
-(NSString *)description{
    return [NSString stringWithFormat:@"狗腿的个数:%d,狗的眼睛个数:%d",_tuiNum, _eyeNum];
}

3. 千万不要在description方法中同时使用%@和self
- (NSString *)description {
    return [NSString stringWithFormat:@"%@", self];
}
同时使用了%@和self,代表要调用self的description方法,因此最终会导致程序陷入死循环,循环调用description方法



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马