您的位置:首页 > 其它

OC每周一考(二)

2015-09-19 16:20 246 查看
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对象不能改变值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: