OC每周一考(二)

本文详细解释了Objective-C中的关键概念,包括方法重写、id类型的行为、多重继承的替代方案、协议定义、@required与@optional的区别、分类的用途、NSNumber对象的创建及操作方法等。

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

OC每周一考(二)
1、什么是方法重写?举例说明
:子类可以从父类继承方法,但是有时候父类的方法不适合,这个时候子类就写一个和父类相同名字的方法,这个就是重写。
例子:
父类
-(void)func{
     NSLog(@“123”);              
}
子类
-(void)func{
     NSLog(@“456”);              
}

2、id类型什么类型,如果向id类型对象发送消息,那么执行流程是怎样的?
:id类型可以是任何类型。假如向id类型对象发送消息,首先,编译器不知道id类型对象是什么类型的对象不会报错,只有在运行的时候编译器才知道id类型对象是什么类型的对象,如果对象所属类没有这个类型,程序就会出错。

3、ObjC中有多重继承么?如果没有,那用什么方法替代多重继承呢?
:Cocoa中所有的类都是继承自NSObject这个类,所以没有多重继承。使用protocol委托代理来实现的。

4、协议是什么,如何定义一个协议?
:协议就是定义了一组方法,让其他的类去实现。
@protocol 协议名<父协议>
定义方法,默认required
@required//这个关键词定义的方法是必须要实现的。
@optional//这个关键词定义的方法实现是可选的。
@end

5、@required和@optional两个关键字的作用是什么?协议中的方法默认被哪个关键字所修饰?
:@required:这个关键词修饰的方法是其他类必须要实现的,也是默认值。@optional:这个关键词修饰的方法对于其他类实现是可选的。

6、分类的作用是什么,如何定义一个分类?
:分类可以不改变原来类的代码的基础上,对原来的类进行方法的扩充,分类只能方法扩充,不能增加成员变量的定义,分类可以实现方法重写,但不推荐。
@interface 所扩展的类名(分类名)<协议>
方法
@end 

7、NSNumber对象的创建方式有几种?举例说明
:两种,一种是类方法,一种是实例方法。
NSNumber* a = [NSNumber* numberWithInteger:100];
NSNumber* a = [[NSNumber alloc]initWithInteger:100];

8、如何把一个NSInteger类型的数据转换成NSNumber对象?如何把NSNumber对象转换成NSInteger类型呢?
:NSNumber* a = [NSNumber* numberWithInteger:100];
    NSInteger aa = [a NSIntegerValue];

9、如何比较两个NSNumber对象?NSComparisonResult是什么类型?
:可以使用isEqualToNumber和NSOrdereSame比较相等或者使用NSOrderedAscending和NSOrderedDescending比较小大。NSComparisonResult是枚举类型。

10、NSNumber对象可以被重新初始化么,如

NSNumber* intNumber = [NSNumber numberWithInteger: 100];

[intNumber initWithInt: 1000];

这种书写方式正确么?

:不可以被重新初始化。不正确,因为NSNumber对象不能改变值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值