当前位置:编程学习 > wap >>

IOS学习笔记48--一些常见的IOS知识点+面试题

1、堆和栈什么区别?
 答:管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生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 ?
 
答:可以
 
8、ios4、5、6相对于之前的版本添加了哪些新特性?
  这个就比较多了,比如:抛弃谷歌地图 新推Maps应用 ,大幅加强中国本地化支持,Siri开口讲普通话,通过iCloud体验分享乐趣,Passbook电子票券管理,随时随地的FaceTime,电话功能增强,Safari支持全屏浏览,Mail应用新增VIP,万能辅助:更强大等等了
 
 
9、同步请求和异步请求什么区别?
答:发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作,
 
      异步请求不会阻塞主线程,而会建立一个新的线程来操作,用户发出异步请求后,依然可以对UI进行操作,程序可以继续运行。
 
 
10、iOS中的多线程操作、多线程方式
 
答:iOS提供了方便的多线程调用机制:NSOperation和NSOperationQueue。它的使用方法也很简单,
 
一般都是将NSOperation对象加入到NSOperationQueue队列中,加入后队列就开始处理,知道任务操作完成。
 
11、UIViewController的生命周期
 
答:当一个视图控制器被创建,并在屏幕上显示的时候。 代码的执行顺序
      // 视图显示在屏幕上的顺序
 
     1、 alloc                    创建对象,分配空间。
 
    2、init (initWithNibName)    初始化对象,初始化数据。
 
    3、loadView                   从nib载入视图, 这一步不需要去干涉。除非没有使用xib文件创建视图。
 
    4、viewDidLoad                加载完毕,可以进行自定义数据以及动态创建其他控件。
 
    5、viewWillAppear             视图将出现在屏幕之前,马上这个视图即将显示在屏幕上。
 
    6、viewDidAppear              视图已在屏幕上渲染完成。
 
    // 视图将被从屏幕上移除的顺序
 
    1、viewWillDisappear          视图将被从屏幕上移除之前执行。
 
    2、viewDidDisappear           视图已经被从屏幕上移除。
 
    3、dealloc                    视图被销毁,此时需要在init和viewDidLoad中创建的对象进行释放。
 
    4、viewDidUnload       &nb
补充:移动开发 , IOS ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,