答:管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生memory leak。
2、数组和链表什么区别?
答:数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。
链表恰好相反,链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起。
3、delegate和notification什么区别,什么情况使用?
答:Delegate:
消息的发送者(sender)告知接收者(receiver)某个事件将要发生,delegate同意然然后发送者响应事件,
delegate机制使得接收者可以改变发送者的行为。
通常发送者和接收者的关系是直接的一对多的关系。
Notification:
消息的发送者告知接收者事件已经发生或者将要发送,仅此而已,接收者并不能反过来影响发送者的行为。
通常发送者和接收者的关系是间接的多对多关系。
4、什么是MVC,为什么使用MVC,有什么好处?
答: 分别为: 模型(Model),视图(View)和控制Controller)。
模型(Model) “数据模型”(Model)用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。
“模型”有对数据直接访问的权力,例如对数据库的访问。
视图(View) 视图层能够实现数据有目的显示。
控制器(Controller) 控制器起到不同层面间的组织作用,用于控制应用程序的流程。
5、从一个数组中找出重复的元素打印出来
NSArray *arr = [NSArrayarrayWithObjects:@"1",@"2",@"1",@"7",@"4",@"5",@"2",@"6",@"5",nil];
NSMutableArray *arrmu = [[NSMutableArrayalloc]init];//过滤
NSMutableArray *sameArray = [[NSMutableArrayalloc]init];//找出相同的
for (int i = 0 ; i < [arrcount]; i++) {
id str = [arr objectAtIndex:i];
if ([arrmu count] == 0)
{
[arrmuaddObject:str];
}
else{
BOOL flag = NO;
for (int j = 0; j < [arrmucount]; j++ ) {
if ([strisEqual:[arrmu objectAtIndex:j]])
{
[sameArrayaddObject:str];
flag =YES;
break;
}
else{
flag =NO;
}
}
if (flag == NO) {
[ arrmuaddObject:str];
}
}
}
NSLog(@"sameArray : %@",sameArray);
还有两种直接找出的方法,上代码:
一:
NSArray *arr = [NSArrayarrayWithObjects:@"1",@"2",@"1",nil];
NSSet *set = [NSSetsetWithArray:arr];
NSLog(@"%@",[setallObjects]);
二:NSArray *arr =@[@1,@2,@1];
NSMutableDictionary *dict = [NSMutableDictionarydictionary];
for (NSNumber *numberin arr) {
[dictsetObject:numberforKey:number];
}
NSLog(@"%@",[dictallValues]);
6、UITableView能否绑定多个数据源?
答:不能
7、一个UIViewController能否管理多个UITableView ?