iOS-面试题2
1、OC 能实现私有化吗?
答:方法的私有化,声明即外漏,不声明不外漏。( .m 可以实现私有化。)
2、OC 中有多继承吗?
答:没有直接的多继承,可以模拟实现。采用 协议 就可以实现多继承。
2、解释类、对象、实例方法和实例成员
类:一类事物的抽象,有成员和方法。
对象:类的实例化和具体化
实例方法:主要和类方法区别,类方法声明时前面用加号,实例方法声明时用减号
实例成员:主要和类成员区分,类成员加static,实例成员不需要。
3、类名、方法名、成员名、函数名、宏定义首字母哪些大写,哪些小写
大写:类名,宏定义
小写:方法名,成员名,函数名
4、@public,@protected,@private区别
@public:完全公开,在程序的任何地方都可以调用
@private:和@public相反,只能在该类内部不调用
@protected:只有自己和自己的子类可以调用
5、如何声明一个带两个参数的实例方法和如何调用(举例说明)
声明:-(void)methodForParameter1:(NSString *)p1 parameter2:(NSString *)p2;
调用:[self methodForParameter1:@"" parameter2:@""];
6、@property (nonatomic, retain) Example *example;
写出其setter和getter方法
getter
- (Example *)example { return _example; }
setter
-(void)setExample:(Example *)aExample
{
if (example != aExample)
{
[example release];
example = [aExample retain];
}
}
7、static关键字的作用,extern关键字的作用
static:定义全局变量;定义类成员;定义内部函数
extern:声明外部变量和外部函数,所声明的变量和函数可能不在本文件内定义或实现
8、解释self
self就是实例本身,在类里用self来调用自身的方法
9、什么时候使用继承?什么时候使用类别
给一个类增加新的数据成员时用继承
只是想扩展类的方法或覆盖原来的方法时用类别
10、如何声明一个类
@class Example或者
@interface Example
@end
11、写出1-2个与动态调用有关的方法
respondsToSelector 、performSelector、conformsToProtocol、isKindOfClass、isMemberOfClass
12、写一个协议(举例),协议有什么用
@protocol ExampleProtocol <NSObject>
- (void)exampleProtocol;
@end
@interface ExampleClass : NSObject
{
id<ExampleProtocol> delegate;
}
@property (nonatomic,assign) id<ExampleProtocol> delegate;
@end
一个通过协议对外提供接口。
Foundation
1、存放数字用哪个类,存放CGRect用什么类型
存放数字用NSNumber
存放CGRect用NSValue
2、快速枚举(举例)
NSArray *array = [NSArray array];
for (id object in array)
{
[object test];
}
3、有哪些集合类和存放二进制数据类
NSArray/NSMutableArray,NSDictionary/NSMutableDictionary,NSSet/NSMutableSet/NSCountedSet,NSData存放二进制数据
4、文件处理用哪些类(写1-2个)
NSFileManager\NSUserDefaults open, fopen
5、解释retain、copy、assgin、autorelease
retain,copy:计数器加一,区别是retain是原对象计数器加一,copy是创建一个新对象后,新对象计数器加一
assgin:简单复制,计数器不变
autorelease:内存延迟释放,计数器延迟减一
6、写出归档相关类
NSKeyedArchiver、NSKeyedUnarchiver
7、写出xml解析和网络相关类
xml解析:NSXMLParser, kissXML GDATA
网络:NSConnection
8、常用的xml/json解析和http请求第三方包各写出一个
xml:kissxml
json:SBJSon
http请求:ASIHttpRequest SDWebImage, 异步图片加载器(界面流畅)
异步mp3 异步video
9、代理和通知的区别
代理是垂直的,通知可以平行的
cocoa
1、写出iphone编程中常用控件类名(不用很准确,写出五个以上)
UILabel,UITextField,UITextView,UIButton,UISwitch, UISegmentedControl,UISlider,UIImageView ,UIScrollView,UITableView,UITabBarController,UINavigationController
2、写出几个常用的设计模式(两个以上)
MVC设计模式
单例模式
代理模式
通知模式
工厂模式