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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhao543 中级黑马   /  2017-6-17 20:45  /  1806 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


************************C语言部分************************
1.1.        运算符
    赋值运算   =
    自增自减运算 ++ --
    逻辑运算  && || !
    三目运算  A?B:C;

1.2.        结构
    顺序结构  从上到下
    选择结构
        if  if-else  if-else-if  switch
    循环结构
        while  do-while  for


1.3.        函数
    定义  调用  声明
    四种类型
    有参数就给,有返回值就接

1.4.        数组
   基本语法: 声明,初始化,使用,遍历

   值传递:基本数据类型作为函数的参数,在函数内部不能修改实参变量的值!
   地址传递: 数组作为函数参数,在函数内部可以修改数组元素的值
            会丢失数组的长度,如果需要用数组长度要额外传递!

    一维数组作为函数的参数: void test(int arr[],int len);
    二维数组作为函数的参数: void test(int rows, int cols, int arr[][cols]);

  排序算法
    选择排序  len -1(外层)  j = i+1   j < len    比较  i   j
    冒泡排序  len -1(外层)  j = 0   j<len-1-i    比较  j  j+1

1.5.        指针
   指针的基本使用
    1. 指针变量的声明.
    int *p;

    2. 指针变量的初始化.
    p = &m;

    3. 指针的使用.
    *p;//取值(拿到p1指向的变量)
    *p = 20;//赋值(给p1指向的变量赋值)


1.6         字符串
    1,字符串的两种存储方式.
    char name[] = "jack";(可变)
    char *name = "jack";(不可变)

    2,字符串的输入
    char ch[20];
    scanf("%s",ch);

    3,字符串的输出
    printf("%s",ch);

    4,字符串的遍历
    for (int i = 0; i < strlen(ch); i++) {
        NSLog(@"%c",ch[i]);
    }



1.7.        结构体

  1,结构体基本使用

    1). 作用:保存不同类型的数据

    2). 使用结构体来创建1个新的数据类型.
    struct Student
    {
        int age;
        char* name;
    };

    3). 声明结构体类型的变量.
    struct Student  stu;

    4). 初始化(赋值)
    stu.name = "jack";
    stu.age = 20;

    5). 取值
    stu.name;
    stu.age;


  2,结构体数组
    struct Student s1;
    struct Student s2;
    struct Student arr[2] = {s1,s2};


  3,结构体指针
    struct Student s1;
    struct Student *ps = &s1;
    ps->name;

  4,结构体嵌套



1.7.  枚举

    1).什么时候用
    当变量有几个限定的取值范围的时候

    2).语法
    enum Sex
    {
        SexMan,
        SexWoman,
        SexYao
    };

    3).声明变量. enum Sex s;

    4).初始化 s = SexMan;


************************OC基础部分************************

2.1.        基础语法
    面向对象编程思想
    类和对象创建及基本使用
    方法的基本使用


2.2.        对象方法和类方法
    对象方法只能通过对象调用
    类方法只能通过类名调用

2.3 self和super
    谁调用当前方法,self就代表谁
    self代表当前类,super代表父类
    "一句话总结
    调用自己的方法,建议使用self
    调用父类的方法,建议使用super

2.4  封装
    setter 和 getter 方法

2.5  继承
    @interface 类名 : 它爹的名字(父类的类名)

    @end

    @implementation 类名

    @end

2.6  多态
    概念:父类指针指向子类对象   HMPerson *p = [HMStudent new];

    实现多态的3个前提条件
    1,继承关系
    2,方法的重写
    3,父类的指针指向子类对象

2.7  重写构造方法(固定格式)
    - (instancetype)init
    {
        if(self = [super init])//1,先初始化父类
        {
            初始化子类属性        //2,再初始化子类
        }
        return self;            //3,返回self
    }


2.8  自定义构造方法 和  快速创建对象的类方法

    //自定义构造方法
    - (instancetype)initWithName:(NSString *)name andAge:(int)age andHeight:(float)height
    {
        if(self = [super init])
        {
            self.name = name;
            self.age = age;
            self.height = height;
        }
        return self;
    }

    //快速创建对象的类方法
    + (instancetype)personWithName:(NSString *)name andAge:(int)age
    {
        return  [[self alloc] initWithName:name andAge:age];
    }




************************OC加强部分************************


3.1      MRC
    1,内存管理的原则
        谁创建,谁release
        谁retain,谁release

        只要还有人在使用某个对象,那么这个对象就不会被回收;
        只要你想使用这个对象,应该让对象的引用计数器+1;
        当你不想使用这个对象时,应该让对象的引用计数器-1;

    2,set方法内存管理
        1)基本数据类型:直接赋值
        2)OC对象类型:先判断是不是新传进来的对象, 对旧对象做一次release,对新对象做一次retain

    - (void)setCar:(HMCar *)car
    {
        if(_car != car) //如果传入的car对象和本来的car对象不是同1个对象.
        {
            [_car release];//代表旧车不再使用 少1个人
            _car =  [car retain];//新车retain 代表新车多我1个使用.
        }
    }


3.2     ARC

    ARC的判断准则: 只要没有强指针指向对象,对象就会被立即释放

    strong : 用于OC对象(现在只要是对象都用strong)
    assign : 用于基本数据类型(int,float,double,数组,结构体,枚举)



3.3      分类

    分类的作用:在不改变原有类的基础上为类扩充方法

    分类的声明和实现.
    @interface HMStudent (分类名)

    @end

    @implementation HMStudent (分类名)

    @end

    非正式协议 :为系统自带的类写分类.就叫做非正式协议.


3.3      block
    block变量的声明,初始化和调用(必须掌握)

    //无参无返回值
    void (^test1)(); //定义了一个block的变量
    test1 = ^(){
        
        NSLog(@"我是block");
    };


    //有参无返回值
    void (^test2)(int a,int b) = ^(int a,int b){
        
        NSLog(@"a+b = %d",a+b);
        
    };


    //有参有返回值
    int (^test3)(int a,int b) = ^(int a,int b){
        
        return a + b;
        
    };

    //无参有返回值
    int (^test4)() = ^(){
        
        return 10;
        
    };

    调用:有参数就给,有返回值就接



3.3      协议和代理

    协议: 一些方法的声明,写在.h文件中,供其他的类去遵守.

    使用协议的流程:
    //--> 定义协议
    // --> 让类遵守这个协议
    // --> 实现协议中对应的方法


    代理设计模式
    学生通过中介找房子  经理让程序员检查代理
    A帮B做事,A就是B的代理!!!,搞清楚,经理让程序员检查代码,老板雇佣员工干活


0 个回复

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