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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© san_ss 中级黑马   /  2016-1-8 00:45  /  731 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文



1.@"",这个符号表示将一个c的字符串转化为oc中的字符串对象NSString.

2.
   在main.m源文件中定义c语言函数,不但可以定义,也可以调用.
   需要声明.有两种方法,一个是全局声明,写在main函数之上,局部声明 写在main函数内部.
   


3.oc中的数据类型:
基本数据类型:1数值型,2字符型(char),3布尔型(BOOL),4空类型(void).
Block类型.
指针数据类型:2类(class),3id类型(万能指针).
特殊类型:1.SEL,2,nil(空).

4.用来保存逻辑值
   Boolean 就是typedef给unsigned char类型取了个boolean这个别名.随后用宏定义将1强转为Blooean(unsigned char)类型并用true代替.false类似取值为ture和false.
   BOOL 同上,取值为YES和NO.

5.OC中新增的异常捕捉方法.
@try {放有可能出错的代码}
@catch(NSException){放出错以后,我们处理的代码} @finally{不管是否出错程序都会执行的代码}

@try并不能检测出所有的错误代码.

6.#pragma mark指令:对代码的分组,方便代码查找和导航用的
一.类方法

  1).类方法可以和实例方法同名,并不影响使用,两个方法调用的对象不同,不会有交叉影响.
  2)类方法也可以从父类继承而来,子类可以重写类方法.
  3).类方法一样在@interface里声明,@implementation里实现.
  4).类方法只能被向类方法发送类方法消息才能执行.
  5).在类方法里使用了self,这个self执行的类对象class object 而不是实例对象instance object.

二.易犯错误.
   1).在类方法中,不允许访问实例变量.

三.对象方法中可以调用其他的对象方法:
   1)在当前对象方法中创建对象,使用新创建的对象调用对象方法.
   2)可以使用self.
   3)对象可以作为方法的参数传递过来,可以使用传递过来的对象调用方法.

四.在类方法中可以调用其他类的方法:
   1)可以直接使用本类类名和其他类名去调用类方法.
   2) 类方法可以调用对象方法(是通过将对象作为参数传入方法,可以直接创建一个对象.)和其他类方法.

   3)类方法不能调用自身

五.类方法应用场景:
   1) 如果调用一个方法,该方法中不需要使用成员变量,就可以声明为类方法.
多态概念和条件.

   一.什么是多态:就是某一种事物的多重形态.
程序中的多态就是:不同的对象以自己的方式响应相同名称方法的能力称为多态.

   二.多态的条件: 1)有继承关系, 有方法重写.父类的声明变量指向子类对象.2)代码体现:用父类类型的指针指向了子类对象.就是多态.

   三.多态的有点:简化了编程接口,它容许类和类之间重用一些习惯性的命名,而不需要为每一个新加的函数命名一个新名字.

多态的原理:
动态绑定:
    1) 动态类型能使程序直到执行时才确定对象所属类型.
     2)动态类型绑定能使程序知道执行时才确定要对对象调用的实际方法.
id类型:是通用指针,弱类型,编译时不进行类型检查.


多态的注意点:
父类调用子类特有的方法时 , 需要对父类的指针进行强制类型转换,将父类的类型的指针转成子类类型的.(此时父类操作的对象是子类创建的)


一、 继承

1.如何继承:
   1,导入要继承的那个类的头文件
   2. interface 类名:父类名

2.重写:
   1.把父类的方法,在子类中重新实现了,这种方法就叫重写

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

二、实例变量修饰符

1.作用域:
   1.@public:任意程序集能够通过实例变量访问(在同一个文件夹内的别的文件也可以访问)。 作用域:在没有遇到其他修饰符时,直到整个声明的大括号结束。
@public类型的变量,在子类中可以正常的访问和使用。
   2.@protcted:同一类和派生类(当前类和子类)。
protected类型的变量,在子类中可以使用,在其他类不能使用。

   3.@private:私有的,表示只能在当前类使用
@private类型的变量,能被子类继承,但是不能被访问。(子类可以继承父类所以的实例变量和方法,但是不是所有的都可以访问)



三.私有变量

    1.在.m文件中定义的实例变量是纯私有的变量,只能在当前类中使用,不能被子类继承,也不能被子类访问.(每个文件中的变量都不会互相影响)

四.OC中的私有方法:在.h中没有声明,在.m中实现了,就叫私有方法(相对私有)

    1.没有在.h文件中声明,在.m文件中实现,不能被子类继承和访问.自己类也不能访问.但是可以在当前类的实现里写[self 方法]去访问.

四.description方法介绍及重写:

    1.当我们以("%@",对象名)的格式打印对象,此时调用了对象的description方法,
    对象中如果没有重写父类的description方法,则调用父类的 ,父类NSObject方法中默认打印<对象类名:对象地址>.重写则输出我们写入的信息.
- (NSString *)description{}

    2.
获取类名的方法是[类名 class],打印类名时候不能直接写类名.

   3.千万不能在description中使用%@和self,这代表着要调用self的description的方法,会陷入死循环.
1. [Person new] 做了3件事.
   1).申请内存空间
   2).给实例变量初始化
   3).返回空间的首地址

2.申请的空间在内存的哪个区:
   1).new的时候申请的空间在内存的堆区(程序动态分配的内存空间).
   2).当new的时候内存的布局是这么样的 :
3 初始化的时候:
   1).如果实例变量是基本数据类型,此时给初始化为0.
   2).如果实例变量是OC字符串类型,此时给初始化null.

4.实例变量保存在堆区.  
p(指针变量)存放在栈区.
对象方法保存在代码区.

5.为什么使用[p run];就可以调用方法了,如何调用的.
   1).首先找到p对应的堆区的空间,然后找到_isa指针,再找到_isa指向的代码区的空间,然后到该空间找方法,

1 个回复

倒序浏览
顶一个            
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马