1, OC中输出函数是什么?如何输出一个字符串?
输出函数是NSLog();输出字符串NSLog(@“hello world”);
2, OC中的对象和指针有什么区别?
oc中的对象都是指针
3, #import 和#include的区别,@class?
答:#import自动防止重复包含#include不能,@class前向声明
5, OC头文件和源文件后缀名分别是什么?
头文件.h 源文件.m
6, C++中有普通成员变量和静态成员变量,OC中有没有对应的变量,称之为什么?
C++中的普通成员函数和静态成员函数对应OC中的什么方法?
oc中有普通的成员变量但没有静态成员变量,在.m文件中使用静态全局变量达到c++中静态成员变量的效果。
c++中普通成员函数对应oc中的实例方法,静态成员函数对应oc中的类方法。
7, OC有没有多重继承?OC中的根类是什么?根类中有哪些方法是常用的?
oc中没有多重继承,oc中的根类是NSObject,根类中常用的方法有alloc方法、init方法
8, C++中的函数调用在OC是另外一种称谓,是什么?
oc中是向对象发送消息
9, OC中的函数重载和C++函数重载的区别是什么?
c++中函数重载要求参数列表不一样,oc中参数重载要求标签不一样。
10, 在OC类的.h文件中为什么要声明@propery(nonatomic)int x;
给x成员声明实现set方法和get方法
11, nonatomic的作用是什么
禁止多线程保护,节省开销(非原子化操作)
12, - (id)initWithName:(NSString*)n
{
if(self = [super init])
{
name = n;
}
}
和
- (id)initWithName:(NSString*)n
{
if(self = [super init])
{
self.name = n;
}
}
有什么区别? 为什么要在name赋值时加self. ?
前者不会调用set方法,加self.会调用@property声明的set方法;
给对象成员赋值时需要调用property属性对该对象成员的引用计数加1。
13, 什么是retaincount,什么时候对象的retainCount会增加
引用计数器(可以写内存管理),alloc,retain,copy,对象被引用(加入到数组中等)
14, 自动释放池是什么,如何工作
答:自动释放池即NSAutoreleasePool,当向对象发送autorelease消息时,对象的引用加入到自动释放池中,当自动释放池对象发送drain消息时,池中的所有对象被真正销毁。
15, 一个程序中只有一个自动释放池吗
不是,一个事件周期开始,系统会自动创建一个自动释放池
每个事件周期结束,系统会自动销毁这个自动释放池,代码运行的时候,自动释放池不会被销毁,这段时间内可以安全的使用autorelease对象,当代码运行告一段落,开始等待用户事件(如:输入等事件)自动释放池会被释放掉,池中的对象便会受到release消息,有可能由此被销毁
16, 简述Objective-C的内存管理
Objective-c使用reference count(引用计数器)来管理内存,对象alloc时引用计数器变为1,copy,retain时引用计数器也会加1,对象发送release消息时,引用计数器减1,当引用计数器为0时,对象对被真正销毁。对于类的实例变量赋值时如果变量不是被显式地alloc出来的需要在property中使用retain或copy并且用self.var = xxx赋值,同时在dealloc方法中释放该实例变量。
还一个是NSAutoreleasePool(自动释放池)
17, OC中的assign,retain,copy有什么区别,@property中什么情况下会使用assign, retain或copy?
assign是对基本数据类型的赋值,
retain会release旧对象然后指向新对象并对新对象应用计数加1,
copy会release旧对象然后指向新对象的拷贝并将该拷贝的对象引用计数加1;
基本数据类型使用assign,拷贝对象时使用copy,引用某个对象时使用retain。
18, 这段代码有什么问题吗:
@implementation Person
- (void)setAge:(int)newAge
{
self.age = newAge;
}
死循环,self.会调用set方法,自己调用自己
19, [origin release]和self.origin=nil;两者有什么区别?
[origin release]是将origin引用计数减1。
self.origin=nil;是将该指针指向空。
20, property中使用retain和copy时,系统生成 的set方法是怎样的?
retain: 需要先判断两个指针对象是否已经指向同一块空间
-(void)setMyObject:(id)thing
{
if(myObject != thing)
{
[myObject release];
myObject = [thing retain];
}
}
copy:
-(void)setMyObject:(id)thing
{
[myObject release];
myObject = [thing retain];
}
21, OC空指针和c++空指针的区别
OC空指针发送消息是合法的,消息被忽略,不响应;C++空指针调用方法崩溃
22, Objective-C有私有方法么?私有变量呢
在Objective-C中没有私有方法,只有静态方法和实例方法。但是可以用@private修饰私有变量
23, Objective-C有多重继承么?不是的话有什么替代方法?
Objective-c没有多重继承,用协议和分类来代替
24, OC中能不能用指向子类的父类指针调用到被子类覆盖的父类方法?
不能 OC中所有的方法都是虚方法
25, 写一个协议(委托)的interface
@protocol MyDelegate
-(void)didSomething:(NSString*)thing;
@end
@interface MyClass :NSObject
{
id <MyDelegate> delegate;
}
@end
26, OC中的协议有什么特点?协议有什么作用?
协议不是类,协议声明的方法不需要立即被实现而是需要遵守该协议的类去实现。
协议的作用类似于c++中抽象基类的作用。
27, 写一个NSString的分类
#import<Fundaton/Fundation.h>
@interface NSString(NSStringExpandMathod)
-(void)addMathod;
@end
@implementation NSString(NSStringExpandMathod)
-(void)addMathod{
//do something
}
@end
28, OC中的分类有什么特点?分类有什么好处?
分类是在类的声明之外对该类扩展方法的类,该类只能扩展方法不能扩展成员变量,一个类可以有多个分类但每个分类必须是唯一的。
分类的好处可以给原有的类扩展新的成员方法
29, OC异常处理和C++的区别
1,只能抛出对象 2,finally
30, Objective-C的优缺点
优点:
1) 分类
2) 协议
3) 动态识别
4) Objective-C 与 C++ 可混合编程
缺点:
1) 不支援命名空间
2) 不支持运算符重载
3) 不支持多重继承
等
31, OC和C++的区别(至少5点)
1,多继承
2,分类
3,运算符重载
4,友元
5,内联
33, NSNumber对象是用于处理数字对象,那么NSNumber* number = [NSNumber numberWithInt:10];和
NSNumber* number = [[NSNumber alloc]initWithNumber:10];有什么区别?
numberWithInt是类方法,initWithNumber是实例方法,类方法创建的对象是autorelease的。
33, 如何比较两个字符串对象?
直接调用字符串的实例方法 compare方法
34, 可以直接把int、float等简单类型加入数组中么?
不可以,数组中只能放对象,需要把int和float等基本数据类型转换成NSNumber对象再放到数组中。
35, 举例说明,如何对数组元素快速遍历?
for (id element in array) {
NSLog(@“%@“,element);
}
36, 举例说明,对数组元素排序应该如何实现?
[anArray sortedArrayUsingSelector:@selector(compareMethod:)];
-(NSComparisonResult) compareMethod: (id) element;
37, 字典是有序集合还是无序集合?
无序集合
38 如何获取字典中的所有键,那又如何获得所有的值呢?
[aDictionary allKeys];
[aDictionary allValues];
39, 截取字符串”20|http://www.621life.com“ 中 ‘|’字符前面及后面的数据,分别输出它们
NSArray* array = [@”20|http://www.621life.com” componentsSeparatedByString@”|”];分割字符串
40, 如何实现数据持久化保存
1,数据归档(写入沙盒中)2,SQlite数据库 3,NSUserDefault
附:数据归档方法,NSKeyedArchive,[string writeToFile…]等
41, 如何清空一个可变字符串
[str setString:@””];注意是清空,不能是str = nil,str=@””;
42, NSFileManager有哪些功能?
Creat,copy,move,fileExist...
43, 如何判断指定路径的文件是否存在,如何拷贝文件,如何删除文件,请举例说明?
NSFileManager *fm = [NSFileManager defaultManager];
if (![fm fileExistsAtPath:toPath]) {
[fm copyItemAtPath:fromPath toPath:toPath error:nil];
}
[fm removeItemAtPath:fromPath error:nil];
44, 单件实例是什么
单例模式的意图是是的类的对象成为系统中唯一的实例,提供一个访问点,供客户类共享资源。整个程序中只会有一个这个类的实例(对象)产生,所有对象的地址是一样的
static MyClass *class = nil;
+(MyClass *)shareMyClass{
@synchronized (self)//为了确保多线程情况下,仍然确保实体的唯一性
{
if (!class){
[[self alloc]init];
}
}
return class;}
输出函数是NSLog();输出字符串NSLog(@“hello world”);
2, OC中的对象和指针有什么区别?
oc中的对象都是指针
3, #import 和#include的区别,@class?
答:#import自动防止重复包含#include不能,@class前向声明
5, OC头文件和源文件后缀名分别是什么?
头文件.h 源文件.m
6, C++中有普通成员变量和静态成员变量,OC中有没有对应的变量,称之为什么?
C++中的普通成员函数和静态成员函数对应OC中的什么方法?
oc中有普通的成员变量但没有静态成员变量,在.m文件中使用静态全局变量达到c++中静态成员变量的效果。
c++中普通成员函数对应oc中的实例方法,静态成员函数对应oc中的类方法。
7, OC有没有多重继承?OC中的根类是什么?根类中有哪些方法是常用的?
oc中没有多重继承,oc中的根类是NSObject,根类中常用的方法有alloc方法、init方法
8, C++中的函数调用在OC是另外一种称谓,是什么?
oc中是向对象发送消息
9, OC中的函数重载和C++函数重载的区别是什么?
c++中函数重载要求参数列表不一样,oc中参数重载要求标签不一样。
10, 在OC类的.h文件中为什么要声明@propery(nonatomic)int x;
给x成员声明实现set方法和get方法
11, nonatomic的作用是什么
禁止多线程保护,节省开销(非原子化操作)
12, - (id)initWithName:(NSString*)n
{
if(self = [super init])
{
name = n;
}
}
和
- (id)initWithName:(NSString*)n
{
if(self = [super init])
{
self.name = n;
}
}
有什么区别? 为什么要在name赋值时加self. ?
前者不会调用set方法,加self.会调用@property声明的set方法;
给对象成员赋值时需要调用property属性对该对象成员的引用计数加1。
13, 什么是retaincount,什么时候对象的retainCount会增加
引用计数器(可以写内存管理),alloc,retain,copy,对象被引用(加入到数组中等)
14, 自动释放池是什么,如何工作
答:自动释放池即NSAutoreleasePool,当向对象发送autorelease消息时,对象的引用加入到自动释放池中,当自动释放池对象发送drain消息时,池中的所有对象被真正销毁。
15, 一个程序中只有一个自动释放池吗
不是,一个事件周期开始,系统会自动创建一个自动释放池
每个事件周期结束,系统会自动销毁这个自动释放池,代码运行的时候,自动释放池不会被销毁,这段时间内可以安全的使用autorelease对象,当代码运行告一段落,开始等待用户事件(如:输入等事件)自动释放池会被释放掉,池中的对象便会受到release消息,有可能由此被销毁
16, 简述Objective-C的内存管理
Objective-c使用reference count(引用计数器)来管理内存,对象alloc时引用计数器变为1,copy,retain时引用计数器也会加1,对象发送release消息时,引用计数器减1,当引用计数器为0时,对象对被真正销毁。对于类的实例变量赋值时如果变量不是被显式地alloc出来的需要在property中使用retain或copy并且用self.var = xxx赋值,同时在dealloc方法中释放该实例变量。
还一个是NSAutoreleasePool(自动释放池)
17, OC中的assign,retain,copy有什么区别,@property中什么情况下会使用assign, retain或copy?
assign是对基本数据类型的赋值,
retain会release旧对象然后指向新对象并对新对象应用计数加1,
copy会release旧对象然后指向新对象的拷贝并将该拷贝的对象引用计数加1;
基本数据类型使用assign,拷贝对象时使用copy,引用某个对象时使用retain。
18, 这段代码有什么问题吗:
@implementation Person
- (void)setAge:(int)newAge
{
self.age = newAge;
}
死循环,self.会调用set方法,自己调用自己
19, [origin release]和self.origin=nil;两者有什么区别?
[origin release]是将origin引用计数减1。
self.origin=nil;是将该指针指向空。
20, property中使用retain和copy时,系统生成 的set方法是怎样的?
retain: 需要先判断两个指针对象是否已经指向同一块空间
-(void)setMyObject:(id)thing
{
if(myObject != thing)
{
[myObject release];
myObject = [thing retain];
}
}
copy:
-(void)setMyObject:(id)thing
{
[myObject release];
myObject = [thing retain];
}
21, OC空指针和c++空指针的区别
OC空指针发送消息是合法的,消息被忽略,不响应;C++空指针调用方法崩溃
22, Objective-C有私有方法么?私有变量呢
在Objective-C中没有私有方法,只有静态方法和实例方法。但是可以用@private修饰私有变量
23, Objective-C有多重继承么?不是的话有什么替代方法?
Objective-c没有多重继承,用协议和分类来代替
24, OC中能不能用指向子类的父类指针调用到被子类覆盖的父类方法?
不能 OC中所有的方法都是虚方法
25, 写一个协议(委托)的interface
@protocol MyDelegate
-(void)didSomething:(NSString*)thing;
@end
@interface MyClass :NSObject
{
id <MyDelegate> delegate;
}
@end
26, OC中的协议有什么特点?协议有什么作用?
协议不是类,协议声明的方法不需要立即被实现而是需要遵守该协议的类去实现。
协议的作用类似于c++中抽象基类的作用。
27, 写一个NSString的分类
#import<Fundaton/Fundation.h>
@interface NSString(NSStringExpandMathod)
-(void)addMathod;
@end
@implementation NSString(NSStringExpandMathod)
-(void)addMathod{
//do something
}
@end
28, OC中的分类有什么特点?分类有什么好处?
分类是在类的声明之外对该类扩展方法的类,该类只能扩展方法不能扩展成员变量,一个类可以有多个分类但每个分类必须是唯一的。
分类的好处可以给原有的类扩展新的成员方法
29, OC异常处理和C++的区别
1,只能抛出对象 2,finally
30, Objective-C的优缺点
优点:
1) 分类
2) 协议
3) 动态识别
4) Objective-C 与 C++ 可混合编程
缺点:
1) 不支援命名空间
2) 不支持运算符重载
3) 不支持多重继承
等
31, OC和C++的区别(至少5点)
1,多继承
2,分类
3,运算符重载
4,友元
5,内联
33, NSNumber对象是用于处理数字对象,那么NSNumber* number = [NSNumber numberWithInt:10];和
NSNumber* number = [[NSNumber alloc]initWithNumber:10];有什么区别?
numberWithInt是类方法,initWithNumber是实例方法,类方法创建的对象是autorelease的。
33, 如何比较两个字符串对象?
直接调用字符串的实例方法 compare方法
34, 可以直接把int、float等简单类型加入数组中么?
不可以,数组中只能放对象,需要把int和float等基本数据类型转换成NSNumber对象再放到数组中。
35, 举例说明,如何对数组元素快速遍历?
for (id element in array) {
NSLog(@“%@“,element);
}
36, 举例说明,对数组元素排序应该如何实现?
[anArray sortedArrayUsingSelector:@selector(compareMethod:)];
-(NSComparisonResult) compareMethod: (id) element;
37, 字典是有序集合还是无序集合?
无序集合
38 如何获取字典中的所有键,那又如何获得所有的值呢?
[aDictionary allKeys];
[aDictionary allValues];
39, 截取字符串”20|http://www.621life.com“ 中 ‘|’字符前面及后面的数据,分别输出它们
NSArray* array = [@”20|http://www.621life.com” componentsSeparatedByString@”|”];分割字符串
40, 如何实现数据持久化保存
1,数据归档(写入沙盒中)2,SQlite数据库 3,NSUserDefault
附:数据归档方法,NSKeyedArchive,[string writeToFile…]等
41, 如何清空一个可变字符串
[str setString:@””];注意是清空,不能是str = nil,str=@””;
42, NSFileManager有哪些功能?
Creat,copy,move,fileExist...
43, 如何判断指定路径的文件是否存在,如何拷贝文件,如何删除文件,请举例说明?
NSFileManager *fm = [NSFileManager defaultManager];
if (![fm fileExistsAtPath:toPath]) {
[fm copyItemAtPath:fromPath toPath:toPath error:nil];
}
[fm removeItemAtPath:fromPath error:nil];
44, 单件实例是什么
单例模式的意图是是的类的对象成为系统中唯一的实例,提供一个访问点,供客户类共享资源。整个程序中只会有一个这个类的实例(对象)产生,所有对象的地址是一样的
static MyClass *class = nil;
+(MyClass *)shareMyClass{
@synchronized (self)//为了确保多线程情况下,仍然确保实体的唯一性
{
if (!class){
[[self alloc]init];
}
}
return class;}
1924

被折叠的 条评论
为什么被折叠?



