OC测试题

一、选择题

1、面向对象的特征:封装、继承、多态。

2、便利构造器的例子:

+(id)studentWithName:(NSString *)aName andAge:(int)anAge{

Student *student=[[Student alloc]initWithName:aName andAge:anAge];

[student autorelease];

return student;

}

3、向Xcode控制台输出一个字符串使用:NSLog()

4、Objective-C中得委托最好声明成:assign

5、Objective-C中所有实例变量默认的访问权限为:protected

6、如果一个类遵从一项协议,那么它必须实现:这个协议里的所有required methods

二、简答题

1、#import跟#include有什么区别,@class呢?

答:A类要用到B类的一个对象作为自己的一个实例变量,那么在A类的.h文件中要写上“@class B”,如果还要使用B类中得方法和成员变量,那么在A类的.m文件中还要使用 #import “B.h”。#import解决了#include不能解决的重复引用问题。

2、Objective-C有多继承吗?没有的话用什么代替?

答:Objective-C没有多继承,用委托代理来实现。

3、property中属性retain、copy、assign的含义是什么,有什么区别?

答:assign——用于简单的数据类型,如NSInteger、bool、double

copy和retain用于对象:

copy——用于当a指向一个对象,b也想指向同样的对象的时候,如果用assign,a如果释放,再调用b会Crash,如果用copy的方式就不会,因为copy后,a和b各自有自己的内存。

retain——会使引用计数加1,也可以解决assign问题。

4、id、nil代表什么?

答:id——动态对象类型

nil——动态类型和静态类型对象的否定词汇。表示为空对象。

5、OC中为什么会出现野指针?会有什么样的后果?

答:

	1 Student *stu = [[Student alloc] init];
	2 //stu这个指针变量指向Student的对象
	3 [stu setAge:10];
	4 //给stu所指向的Student对象发送setAge:消息,即调用这个Student的setAge:方法
	5 [stu release];
	6 //给stu所指向的Student对象发送一条release消息,当Student对象接收到release消息以后,Student对象马上会被销毁,所占用的内存会被回收
	7 [stu setAge:10];
	  //因为Student的对象被销毁了,它之前的占用内存就变成了垃圾内存,这时stu成了野指针。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值