黑马程序员技术交流社区

标题: oc day 4 [打印本页]

作者: 王元18611727076    时间: 2015-10-30 18:19
标题: oc day 4
Oc-day4
//------------------文档安装和方法重载:
1. 在线安装
xcode-> 系统偏好设置->Doucument->下载

2. 离线安装


第三方软件:Dash

//----------------方法重载
方法重载:是指在一个类中定义多个同名的方法

方法名相同,传的参数类型不同

在OC中没有重载


//---------------static关键字:



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

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


//-----------------C语言中的内存管理
内存分为5大区域
栈区 -- 存放局部变量,临时变量
堆区 -- 程序运行过程中,动态分配的内存
BSS区 -- 未初始化的全局变量和静态变量
数据段 -- 已经初始化的全局变量和静态变量
代码段 -- 程序编译产生的二进制的数据

//-------------------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方法



作者: heiHorse    时间: 2015-10-30 18:22
可以啊。。。。
作者: yuweiyuwei    时间: 2015-10-30 18:51
不错不错




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2