黑马程序员技术交流社区

标题: OC第二天(细节不全 但概要全有 留给未来的自己) [打印本页]

作者: 普通蜗牛    时间: 2015-8-9 19:45
标题: OC第二天(细节不全 但概要全有 留给未来的自己)
//
//  OC2总结.h
//  0805代码实践
//
//  Created by apple on 15-8-5.
//  Copyright (c) 2015年 itcast. All rights reserved.
//

#ifndef _805_____OC2___h
#define _805_____OC2___h


#endif
***************************************************
1.对象的存储细节
[Person new] 做了三件事
    1)
    2)
    3)

//1.申请的空间在内存的哪个区?
        new的时候申请额空间在内存的堆区(程序动态分配的内存空间)

        初始化的时候  如果实例变量是基本数据类型,此时给初始化为0
如果实例变量是OC字符串类型,此时初始化为null;

//2.实例变量保存在什么地方
    堆区

    per(指针变量) 存放在栈区


//3.对象方法保存的什么地方
        代码区

//4.为什么使用【per run];就可以调用方法 了,如何调用
        首先找


//5.一个类可以创建多个对象



***************************************************
#pragma mark
作用:给代码分组

补充 #warning 处理未完成的任务,方法

***************************************************
函数和对象方法的区别

对象方法:
-(void)run;
    (1)对象方法的实现只能写在@implementation...@end中,对象方法的声明只能写在 @interface...@end中间
    (2)对象方法都以-号开头,类方法都以+号开头
    (3)对象方法只能由对象来调用,类方法只能由类来调用,不能当做函数一样调用
    (4)函数属于整个文件,可以写在文件中的任何位置,包括@implementation...@end中,但写在 @interface...@end会无法识别,函数的声明可以再main函数内部也可以在main函数外部。
    (5)对象方法归类\对象所有
函数:
    void run(){
    }
    (1)所有的函数都是平行的
    (2)函数不存在隶属关系
    (3)使用的时候可以直接调用
    (4)不可以访问对象中的成员变量



***************************************************
常见的错误汇总

(1)@interface @end和@implementation @end不能嵌套包含 OC是弱语法,可以只有@implementation,但实际开发中千万不要这样。


(2)只有类的声明没有类的实现

(3)漏写@end
(4)两个类的对象声明顺序(可以把顺序打乱)

(5)成员变量没有写在{}里
(6)方法的声明写在了{}里面
(7)在声明时不能对类的成员变量进行初始化,请注意成员变量不能脱离对象而独立存在
(8)方法无法像函数那样的调用
(9)成员变量和方法不能用static等关键字修饰,不要和c语言混淆
(10)类的实现可以写在mian函数后面,在使用之前只要有声明就可以


经典错误

[car respondsToSelector:@selector(stop)]


***************************************************
对象和方法之间的关系

1.对象作为方法的参数


-(void)dispPerson:(Person *) person;

person *p1=[Person new];

[p dispPerson:p1]//对象作为方法的实参








2.对象作为方法的返回值

-(Person *)changeSex:(person *) person{
    person->_sex=kSexWomen;

   
    return person;
   
   
}



































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