OC部分知识点

NSObject ps:类祖宗

@public 成员变量是公共的-类外可访问的成员

@private 私有的-仅类内可访问的成员(仅自己)

@protected 受保护的,类内成员和子类成员可以访问,父类不能访问

@protected 是默认的访问修饰符


@property 类的声明 写在.h文件 (用了属性的话,实例变量默认为私有"private",子类访问父类的成员变量时有两种办法:一种是[self(super) 属性名],  第二种是在父类中使用"{" "}"声明成员变量).

@synthesize 类的实现 写在.m文件

类的命名规范:类名首字母要大写,方法名首字母小写,但方法名中的每个单词首字母要大写,以提高程序的可读性

"-" 方法表明了该方法是实例方法, "+" 方法表明了该方法是类方法


对象:创建对象分两步:分配内存空间和初始化(实质上是需要做三件事:对象的声明,对象分配内存空间和初始化三部分).

分配内存空间:根据类中声明的实例变量为对象分配内存,并返回首地址(alloc,是开辟空间的唯一方法,也可以用"new",但是new的本质上也是用了"alloc")

初始化:为对象的实例变量设置初值


!!! 有冒号一定要有参数(冒号就是参数的标志)

!!! 方法属于类(只有某一个类可以进行)

!!! 函数不属于任意类,可以随意调用


alloc在堆区开辟内存空间,根据类开辟适合大小的内存空间.所开辟出来的内存空间的每一个字节都是清零的,然后将首地址作为返回值,以供外界访问.


就是类型

创建类的目的是为了 用类区创建对象

oc,对象时存放在堆区的,我们只能间接(指针)访问对象


!!!oc,没有多继承,只允许单继承.只要定义了一个新的子类,该类会继承父亲类中除了@private 实例变量之外的全部内容.


子类能直接继承父类的方法,还可以重写父类的方法(子类自己实现). ps:继承也具有传递性

继承只可以单向继承


类方法使用"类名"调用

实例方法使用"对象"调用


初始化方法名一般以"init"开头,初始化方法可以在对象创建的时候给实例变量赋初值,初始化方法的返回值只能是"id""本类"对象,"不能是void"


属性提供了一个默认的设置器(setter)和访问器(getter)的实现.

设置器与访问器提供了一个外界操作类的内部通道,因为类的属性一般是私有的.

ps:oc是一门面向对象的语言,将属性设置为 "@private"体现了其封装的特性


数组里面只能放对象,不能放基本类型数据

数组存的是什么数据,取出来的也是什么类型的数据.(取的时候的类型.)


属性的设置有三个方面:

:读写控制

:原子性

:语义设置

属性也可以设置自己的属性,"@property"后会有一些可选属性(在圆括号内).

一般我们设置"非原子性(nonatomic)"不保证多线程安全,高效


MRC(提示:输入auto):"assign","retain","copy"

setter(有参无返回值)语义属性:

"assign":直接赋值 适用于基本类型(不带"*")

"retain":赋值时做内存优化 适用于对象类型 (一般修饰对象)

"copy":复制一个文本, 适用于特殊类型的对象


ARC(系统默认):"assin","weak","strong","copy"

getter(有返回值无参)语义属性:

"readwrite":可读写(既有设置器也有访问器)默认

"readonly":只读(只有访问器没有设置器)

"getter" = 方法名 指定访问器的方法名

"setter" = 方法名 指定设置器的方法名

如果属性是BOOL类型时,一般会给getter改名字,iOS一般不会给setter方法改名字,即使是BOOL类型(ps:其他类型基本不改)

oc中引入了点语法,使用了属性,我们就可以使用这个语法.(修饰属性)

封装:一种把实现细节隐藏起来的机制. 好处:使用更加简单,变量更加安全,可以隐藏内部实现细节,开发速度加快

description    自己可以决定自己要打印的东西,怎么写的就怎么打

注意:字面量创建的数组是 不可变的 ,通过"mutableCopy"能获取一个可变的数组

字面量会产生不可变的字典  需要使用 mutableCopy解决问题

NSMutableDictionary *dictionary02 = [@{@"name":@"张三",@"sex":@"",@"age":@20} mutableCopy];

遍历字典

    1.先获取所有的key

    NSArray *allkeys = [mDictionary allKeys];

    for (int i = 0; i < allkeys.count; i++) {

        NSLog(@"%@----%@",allkeys[i],mDictionary[allkeys[i]]);

    }

集合:

    1.集合 元素不能重复

    2.集合是无序的

    3.取元素的时候是伪随机


ps:    字符串,数组,字典   数组和字典的使用频率基本一样,集合相反很少用


数组只能存放对象

数组是有序的容器(下标)下标必须从零开始

存的时候什么东西,取的时候就是什么

Foundation框架中,数组是有序的对象的集合.数组中的成员不必要数据类型一致,但是,成员必须是对象

可变数组中,增加的对象不能是"nil"


数组不可变指的是数组元素不可变

"description"    自我描述


"NSArray" , "NSDictionary" , "NSSet"只能储存对象,而不能直接储存任何基本数据类型.

字典使用过程中的注意事项:

1.字典中健值对,键必须是唯一的,不能相同,但值可以相同,即一个值可以通过不同的键索引到.

2.字典中key一般用"NSString"或者"NSNumber",而值可以是任一类型

3.值对象不能是"nil"


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值