OC视频笔记-2

本文介绍了Objective-C的基础概念,包括类的定义与使用、实例变量、方法声明与调用、对象创建与初始化等核心内容,并解释了@dynamic、@class与#import的区别及使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类其实就是一种数据类型,它的变量就是对象。

类可以看成是静态属性(实例变量)和动态属性(方法)的结合体。


在声明实例变量的时候不能为其初始化,系统默认会初始化。

实例变量的默认作用域范围是整个类。

“-”号开始的是实例方法,“+”号开始的是类方法。


OC中方法的调用有两种:

1):[类名或对象名 方法名]

2):对象名.方法名;


OC语言中除基本数据类型之外的变量类型都称为指针类型。

OC中的对象是通过指针对其进行操作的。


OC中对象的创建,使用alloc来创建一个对象。编译器会给object对象分配一块可用的内存地址。然后需要对对象进行初始化即调用init方法,这样这个对象才可以使用。

self是类的隐藏的参数,指向当前调用方法的类,另一个隐藏参数是_cmd,代表当前类方法的selector。

super并不是隐藏的参数,它只是一个“编译器指示符”,它和self指向的是相同的消息接收者。


当使用self调用方法时,会从当前类的方法列表中开始找,如果没有,就从父类中再找;而当使用super时,则从父类的方法列表中开始找,然后调用父类的这个方法。


@class和import的区别

1):为什么会有这两个指令?

答:为了解决循环引用导致的死锁问题。如果有循环依赖关系,如:A->B,B->A这样的相互依赖关系,如果使用#import来相互包含,那么就会出现编译错误,如果使用@class在两个类的头文件中相互声明,则不会有编译错误出现。

2):它们的区别是什么?

答:在头文件中,一般只需要知道被引用的类的名称就可以了。不需要知道其内部的实例变量和方法,所以在头文件中一般使用@class来声明这个名称是类的名称。而在实现类里面,因为会用到这个引用类的内部的实例变量和方法,所以需要使用#import来包含这个被引用类的头文件。


在OC中get这个词有着特殊的含义,因此,不要用get方法命名。


简化设置器和访问器。注意两个关键字“@property”,“@synthesize”。


在@property()括号中,可以填写的属性:

1):readwrite:默认

2):readonly:只读,意味着没有set方法

3):assign:默认,引用计数不增加

4):retain:引用计数增加1

5):原子性:atomic默认。

6):非原子性:nonatomic。

atomic是OC中的一种线程保护技术,是防止在未完成的时候,被另外一个线程使用,造成数据错误。


oc中只支持单继承。

默认的权限控制符号为:protected。

在main函数中使用“->”来访问类的公共实例变量。可以直接通过指针运算符访问实例变量,但是这违背了面向对象的思想。


动态类型:OC在运行时才能确定对象的实际类型。

动态绑定:程序在执行时才确定对象调用的实际方法。

多态:一种事物的多种状态。不同类的对象可以定义共享相同名称的方法,这个就是多态的表现形式。

多态的条件:有继承关系,有方法重写,父类的声明变量指向子类对象。


Car *bmw = [[Bmw alloc]initWithName:@“宝马” carSpeed:140 carId:1001];

[bwm run];

Car*audi = [[Audi alloc]initWithName:@“奥迪” carSpeed:120 carId:1002];

[audi run];

Car*benz = [[Benz alloc]initWithName:@“奔驰” carSpeed:100 carId:1003];

[benz run];

 

- (BOOL)isKindofClass:(Class)aClass;  //对象是不是aClass或其子类。

- (BOOL)isMemberOfClass:(Class)aClass;  //对象是不是aClass的成员。

- (BOOL)isSubclassOfClass:(Class)aClass; //对象是不是aClass的子类。

- (BOOL)respondToSelector:(SEL)aSelector;  //对象是否能响应aSelector指定的方法。

- (id)performSelector:(SEL)aSelector;        //对象调用aSelector指定的方法。

 

使用@try处理异常。

@try…

@catch…

@finally…

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值