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

ios 面试题汇总

2013-12-24 10:09 246 查看


[一般问题] iOS面试1



1).@property(nonatomic,retain)NSString *str;

2).@property(nonatomic,copy)NSString *str;

1)和2)两张写法你习惯使用哪种,为什么?





1).@property(nonatomic,retain)NSString *str;

2).@property(nonatomic,copy)NSString *str;

1)和2)两张写法你习惯使用哪种,为什么?

答:常用1,分情况,retain是指针拷贝,copy是内容拷贝。 retain是同一地址,




iOS面试2:



假设已经存在Aclass类

A.h

AClass *o;

AClass *p;

@property(nonatomic,copy) AClass *o;

@property(nonatomic,assign)AClass *p;

A.m

@synthesize o,p;

-(void)dealloc{

[o release];

[p release];

[super dealloc];

}

-(void)initModel{

AClass *b = [[AClass alloc] init];

self.o = b;

self.p = b;

[b release];

NSLog(@"[%@]",[o descrition]);

NSLog(@"[%@]",[p descrition]);

}

这段代码有什么不妥之处吗?如果有请指出来,说说你会怎么进行修改。





1、assign 不需要释放

2、如果aclass 与 a有循环引用,属性需要用assign

3、对象copy 要实现nscopying 协议才行



iOS面试3




A.h

NSString *o;

@property(nonatomic,retain)NSString *o;

A.m

@synthesize o;

-(void)dealloc{

[o release];

[super dealloc];

}

-(void)initModel{

o = [[NSString alloc] initWithFormat:@"abcde"];

self.o = [NSString stringWithFormat:@"aaaaa"];

NSLog(@"%@",o);

}

这段代码有什么不妥之处吗?如果有请指出来,说说你会怎样修改。




o = [[NSString alloc] initWithFormat:@"abcde"];

冗余代码,没实际意义



iOS面试4





A.h

NSObject *o;

@property(nonatomic,retain)NSObject*o;

A.m

@synthesize o;

-(void)dealloc{

[o release];

[super dealloc];

}

-(void)initModel{

self.o = [[NSObject alloc] init];

self.o = [[NSObject alloc] init];

NSLog(@"%@",o);

}

这段代码有什么不妥之处吗?如果有请指出来,说说你会怎样修改。



iOS面试题
self.o = [[NSObject alloc] init];

最后这个释放不掉,引用技术是2

一般是申请一个局部变量,然后赋值给属性,然后释放局部变量

self.o = [[[NSObject alloc] init] autorelease];

iOS面试题 5

@property(nonatomic,retain)NSString
*s 请写出关键字retain的内部原理。



地址拷贝



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