美文网首页iOS学习iOS 开发每天分享优质文章iOS开发
IOS学习之——新手基础学习资料分享

IOS学习之——新手基础学习资料分享

作者: TenMios | 来源:发表于2016-09-02 20:52 被阅读25次

    /*

    1、OC简介:

    OC 是C语言的超集,它在C语言的基础上增加了最小的面向对象的语法

    2、对比C来学习OC

    数据类型、关键字、流程控制、函数

    3、面向对象的思想

    1、它是一种更接近于现实生活的一种编程思想

    2、它思考问题强调的谁去做

    3、要完成某项任务,首先去找完成该任务对象,如果没有创建一个,然后指挥对象做事。

    4、对象

    在面向对象中万物皆对象

    从另一角度的来说,现实生活中任何具体的事物都可以认为是一个对象

    5、类

    从编程的设计:现实中一类事物抽象,抽象就是提取这一类事物共有的属性和行为

    从编程语言:创建对象必须要类,对象是类的实例;

    6、类与对象关系

    汽车图纸与汽车的关系

    7、设计类

    1、通过文字描述来设计一个类

    名词提取法:只要遇到相关的名词都可以提取一个类

    2、看图提取一个类

    图上具有一些共性的事物都可以提成一个类

    一个类包含三个部分:

    1、类名:这一类事物的名称

    2、属性:某类事物共有一些状态特征

    3、行为:某类事物共有一些功能特征

    8、创建类

    0、设计类

    1、声明:就是对的概括说明,它是给使用该的人看的

    1、确定类名

    2、要继承NSObject,是为了让类有创建对象的能力

    3、声明必须以@interface 开头 以@end结尾

    4、声明属性,必须在@interface 与@end之间的大括号中

    声明属性的时候不可以对属性进行初始化

    5、声明方法,必须在{} 与 @end之间进行声明,不可以有方法的实现

    格式:方法类型标识符 (返回值类型) 方法名:(参数类型) 参数名称 方法名:(参数类型) 参数名称

    1、所有的数据类型都要使用小括号扩起来

    2、一个参数对应一个冒号

    3、冒号是方法名称一部分

    2、实现:实现声明所有的方法

    必须写在@implementation 与@end

    注意点:1、只有声明没有实现的类,链接的时候就报错

    2、只有实现没有声明的类,可以使用(OC弱语法),但是编程的时候也不可以这么做

    3、声明与实现不可以嵌套,一个类的内部也不可声明其他类

    4、少@end

    5、声明的属性没有写在大括号中

    6、声明的方法写在了大括号中

    7、调用类的对象方法的时候只能通过该类对象,不能像函数一样直接调用

    8、函数不能直接访问某个对象的成员变量

    9、函数与方法

    1、函数都是平行,没有谁隶属于谁的关系

    2、函数中定义变量都是局部变量,函数中能直接操作一个类的成员变量

    3、函数的调用是直接通过函数名称进行调用的

    对象方法:

    1、它是隶属于该类的对象的,只能该该类的对象调用

    2、在对象方法中可以直接访问成员变量,因为他们都是隶属于该类的对象的

    10、对象的创建

    Object * obj =  [类名  new];

    1、为类的对象在堆中开辟存储空间

    2、将所有成员变量初始化为0,如果是对象类型的就初始化为nil

    3、返回指向该对象的指针

    */

    // NSString 对象的创建

    // 1、通过字面量创建

    NSString *str = @”天气冷了,注意身体!”;

    NSLog(@”%@”,str);

    // 2、通过对象方法

    // NSString *str1 = [NSString new];

    NSString *str1 = [NSString alloc];

    // str1 = [str1 init];

    str1 = [str1 initWithUTF8String:”大家要努力学习啊!”];

    NSLog(@”%@”,str1);

    // 3、通过类方法创建对象

    // 类方法它是隶属于类的,它是通过“类名”调用

    // 此处的格式化字符串与NSLog中的格式化字符串是一样的

    NSString *str2 = [NSString stringWithFormat:@”今天股票有跌%d个点!”, 10];

    NSLog(@”%@”,str2);

    // 4、NSString 对象中表示长度函数

    // command + 鼠标左键点击进去

    // length 计算的是字符串中有几个字符

    long len = [str length];

    NSLog(@”%ld”,len);

    char *strc = "天气冷了,注意身体!";

    /*

    BOOL OC提供的一种Boolean类型,就是用来表示逻辑上真与假这个类型

    BOOL 在OC中有两个取值 YES 和 NO

    YES 真 对应数字 1

    NO 假 对应数字 0

    使用BOOL可以提高代码可读性,减少代码的出错率

    所有数据类型都可以定义变量

    所有的数据类型都可以作为形参或实参

    所有数据类型类都可以作为返回值

    */

    03-对象与函数

    //对象作为函数参数传递是地址传递

    //在函数可以通过对象访问它里面成员变量

    //也可以对象调用它的对象方法(成员方法

    /因为对象是被创建堆中所以可以作为函数的返回值,

    //而局部变量不可以作为函数的返回值的,应为它在栈中,离开函数就被消耗

    04-对象与方法(掌握)

    /*

    1、对象做方法参数传递是地址传递

    2、对象可以在方法中进行连续的传递

    3、对象可以作为方法的返回值

    */

    *

    对象方法:

    1、声明和实现方法时候,以 -开头

    2、对象方法是隶属于对象,只能通过对象调用

    3、对象方法中可以直接访问成员变量,因为对象方法和成员变量都是隶属于该对象的

    4、对象方法中可以调用其他对象方法

    5、对象方法中也可以调用类方法

    类方法:

    1、声明和实现的标识符都是 +

    2、类方法它是属于类本身的

    3、类方法是直接通类名调用的,不能通过对象调用

    4、类方法不能访问成员变量,因为成员变量是对象的,不是类的

    5、在类方法中不能直接调用对象方法,也就是说不能通过self来调用对象方法

    如果你要再类方法中调用对象方法

    1、在类方法中创建一个对象

    2、把对象作为形参传入

    类方法优点:

    1、调用类方法不用创建对象,所以节省内存

    2、通过对象调用对象方法,首先要通过对象找他isA指针,然后在去类中找相应的方法,所有比较慢

    3、直接通过类调用方法,直接找到这个类然后调用相应的方法就OK了,所有类方法的效率比较高

    4、当方法中不需要使用到成员变量的时候就使用类方法

    /*

    对象方法:

    1、声明和实现方法时候,以 -开头

    2、对象方法是隶属于对象,只能通过对象调用

    3、对象方法中可以直接访问成员变量,因为对象方法和成员变量都是隶属于该对象的

    4、对象方法中可以调用其他对象方法

    5、对象方法中也可以调用类方法

    类方法:

    1、声明和实现的标识符都是 +

    2、类方法它是属于类本身的

    */

    @class CZSoldier;

    //告诉编译器,这是一个类,但是类中有什么样的东西,@class 是不能告诉编译器的

    /*

    在iOS开发中,一个类的声明就是一个头文件(.h),一个类实现是一个实现文件(.m)

    */

    5、多文件开发

    1、为了方便程序管理,我们把一个类分为两个文件

    .h 文件:用来存放类的声明,它是给使用该类的人看的,声明就相当于表盘

    .m 文件:用来实现的类的方法的,就表内部实现,如齿轮

    2、当我们需要使用某个类的时候,需要导入这个类的头文件,不能导入实现文件

    3、当某两个类直接出现循环包含的时候,一端必须使用@class来声明这个类

    4、@class 仅仅是告诉编译器这是一个类,其他关于类本身信息它都不知道,所这@class一般仅仅用在头文件中

    /*

    封装:

    1、类是数据与功能的封装,数据就是成员变量,功能就类方法或对象方法

    2、对数据的封装

    如果我们把属性设置为@public那么,这个属性外部就可以任意的修改,我们就失去管理这个属性的权利

    1、当你把属性暴露在外部的时候,那么你就是失去对它的管理,一旦这个属性被多个人用的时候,如果再像管理这个属性就变得非常麻烦,这个类的可维护性就变得很差

    2、怎么对数据进行封装

    1、为每一个属性提供getter 和 setter方法

    2、setter方法:又称为写方法,赋值给对象赋值

    1、必须是对象方法

    2、它没有返回值

    3、名字 set + 属性名称去掉下划线,首字母大写

    4、必须提供一个参数,参数类型必须与所对象的成员变量的类型一致

    3、getter方法:又称为读方法,赋值读取属性的值

    1、必须是对象方法

    2、必须要返回值,并且返回值类型要与成员变量类型一致

    3、方法名必须是成员变量去掉下划线

    4、一定是空参的

    */

    @interface CZCar : NSObject

    {

    int _wheels;//车轮数‘

    double _speed;//速度

    }

    //_wheels setter

    - (void) setWheels:(int) wheels;

    (int) wheels;

    (void) setSpeed:(double) speed;

    (double) speed;

    @end

    //但是外界还是要访问这个属性的,但我们不让直接方法,而是提供一个读方法 getter方法,写方法setter

    //当我们把提供setter方法后,程序就会更好的灵活性,可以快速响应外界需求的变化

    //age写方法(setter)

    /*

    1、必须是对象方法

    2、它没有返回值

    3、名字 set + 属性名称去掉下划线,首字母大写

    4、必须提供一个参数,参数类型必须与所对象的成员变量的类型一致

    */

    - (void) setAge:(int) age;

    //age读 (getter方法)

    /*

    1、必须是对象方法

    2、必须要返回值,并且返回值类型要与成员变量类型一致

    3、方法名必须是成员变量去掉下划线

    4、一定是空参的

    */

    (int) age;

    //setter方法

    //当在对象方法中访问成员变量的时候,其中隐藏一个指针

    /*

    当方法中如果没有与成员变量名称相同变量,编译器在编译会自动给它加上一个self指针

    如果有与成员变量同名的局部变量,那么这个名字就是一个局部变量,编译器就不会再给他加上self指针了

    */

    /**

    匿名对象:就是没有名字对象

    1、匿名对象仅用一次

    使用场景:

    1、当我们只要调用一个对象的某个方法一次的时候可以使用匿名对象

    2、匿名对象可以作为函数的实际参数

    */

    *

    依赖关系:A对象作为B对象的局部变量或是方法形参的,B依赖与A,这时候我们称A与B之间存在一种依赖关系

    ________________________以下内容了解

    面向对象设计中:

    耦合度:当修改一个对象的时候,对另外一个对象的影响程度

    低耦合: 当修改一个对象的对其他对象影响比较小

    高内聚:一个对象仅仅做自己相关的事情

    面向对象设计原则:单一职责原则

    相关文章

      网友评论

        本文标题:IOS学习之——新手基础学习资料分享

        本文链接:https://www.haomeiwen.com/subject/wakkettx.html