您的位置:首页 > 职场人生

iOS 面试题:OC基本概念题

2014-07-19 21:07 267 查看
1.什么是类和对象?

类是一组具有同样特征和功能的事物的抽象

对象描写叙述了一个物体的特征和行为实现

类是对象的抽象 对象是类的实例

2.OC中定义类,创建对象,使用对象.

OC中定义类分为接口部分,实现部分

接口部分:对外声明类的特征和行为

实现部分:实现方法,即类的行为实现

创建对象须要进行分配内存空间和初始

3.声明方法,依据需求.区分:方法声明,方法实现,方法运行

4.继承.继承的全部特点

子类能够继承父类全部的声明的方法和除私有的以外实例变量

父类不能使用子类所创建的方法和实例变量

5.self和super

self 给对象发送消息 运行该类的方法

super 给对象发送消息 运行父类的方法

6.初始化方法.会依据需求自己定义,可以写出完整的实现

例: - (id) initWithName:(NSString *)name

sex:(NSString *)sex

age:(int)age

{

self = [super init];

if(self)

{

self.name = name;

self.sex = sex;

_age = age

}

return self;

}

7.实例变量的可见度,以及各自的特点,默认可见度是什么?

怎样在类的外部,操作默认可见度的实例变量.

@public 公有的

@protected 保护的(默认的)

@private 私有的

在类的外部,操作默认可见度的实例变量 能够定义实例变量的属性,也能够声明和实现setter和getter方法

8.什么是setter,getter方法,怎样声明?

设置器 - (void) setName:(NSString *)name

訪问器 - (NSString *) name;

9.属性的作用.怎样声明属性,怎样实现属性(声明和实现所相应的keyword)

作用:提供外部訪问 自己主动生成setter和getter方法

@propert (属性的属性) 返回值或參数类型 属性的名字

@synthesize 属性的名字 = 实例变量

10.属性的三个特性?没有特性都有哪些内容,使用场景,特点作用

读写设置:readonly(仅仅读) readwrite(默认)

语义设置: assign(默认 既能够修饰基本数据类型还能够修饰对象)

retain(修饰对象)

copy(修饰对象 而且所修饰的对象要遵守<NSCopying>协议)

原子性:noatomic(不能保证多线程安全)

atomic(默认 保证多线程安全)

11.属性的setter和getter方法的内部实现

用retain修饰

(void) setName:(NSString *)name

{

if(_name != name)

{

[_name release];

_name = [name retain];

}

}

(NSString *) name

{

return [[_name retain] autorelease];

}

12.类的扩展.(类目 延展 协议(一对方法)).代理(运行协议里方法的对象)

类目(category):为没有源码的类加入方法 没有实例变量

类目的声明: @interface 类的名字 (类目的名字)

@end

类目的实现: @implementation 类的名字

@end

注:类目的方法若与类的方法同样 类目的方法优先级高

延展(extention):(匿名类目)管理”私有”方法 写在.m文件里 能够有实例变量

延展的声明:@interface 类的名字 ()

@end

注:声明在延展里的方法必须实现

协议(protocol):没有方法实现 仅仅有方法声明 仅仅有.h文件

默认keyword@require 必须实现 @optionol 能够不实现

协议的声明:@protocol 协议的名字 <NSobject>

注:一个类能够接受多个协议,在< >中用”,”分隔开.用协议能够实现多继承

13.foundation(框架).NSString,NSArray,NSDictionary,NSSet(对象的内容互异).(区分可变和不可变,创建对象,经常用法,类的特点)

NSString 不可变(自身)

命名规则

NSString

第一,创建 initWithFormat或者stringWithFormat

第二,求字符串长度 length

第三,推断字符串是否相等 isEqualToString

第四,字符串替换 stringByReplacingOccurrenceOfString:withString:

第五,字符串比較 compare 返回值枚举

第六,字符串拼接 stringByAppendingFormat

第七,求字符 substringFromlndex

第八,查询字符串 rangeOfString

第九,前缀,后缀 hasPrefix hasSuffix

第十,字母大写 uppercaseString

NSMutableString 可变字符串

第一,创建 使用父类继承的方法或者使用自己的创建方法 initWithCapacity

第二, 增 appendFormat: ///////////

第三, 删 deleteCharacterslnRange:

第四, 改 replaceCharacterslnRange:

第五, 查 insertString:atlndex: /////////////////

NSArray 容器 仅仅能存储对象(继承自NSObject的类) 不可变的数组 不能加入 不能删除,不能改动,

第一,创建 initWithObjects: arrayWithObjects:

第二,看元素 ,objectAtIndex:

第三,数组个数, [array count]

NSMutableArray 可变字符串

第一,增(加入), addObject

第二,删 removeObjectAtIndex: removeObject removeAllObjects

第三,插入 insertObject: atIndex:

第四,替换 replaceObjectAtlndex: withObject:

第五,交换 exchangeObjectAtIndex:(目的串) withObjectAtIndex:(来源串)

NSValue , NSNumber 容器,转换作用

NSValue 转换结构体为对象

NSNumber 转换基本数据类型为对象

14.内存管理

对内存管理的理解:

对象全部权:通过retain alloc copy 是对象的引用计数加1

内存泄露:仅仅分配使用了一块内存,没有释放

过度释放:释放多次

野指针:指针指向不存在的对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: