厦门IOS培训
达内厦门iOS培训中心

0592-5903858

热门课程

学习方式和心得

  • 时间:2017-12-25
  • 发布:厦门达内
  • 来源:企业面试题

1.为什么说Objective-C是一门动态的语言?

1.object-c类的类型和数据变量的类型都是在运行是确定的,而不是在编译时确定。例如:多态特性,我们可以使用父类对象来指向子类对象,并且可以用来调用子类的方法。运行时(runtime)特性,我们可以动态的添加方法,或者替换方法。

2.讲一下MVC和MVVM,MVP?

MVC:简单来说就是,逻辑、试图、数据进行分层,实现解耦。 MVVM:是Model-View-ViewMode模式的简称。由视图(View)、视图模型(ViewModel)、模型(Model)三部分组成.比MVC更加释放控制器臃肿,将一部分逻辑(耗时,公共方法,网络请求等)和数据的处理等操作从控制器里面搬运到ViewModel中 MVVM的特点:

  1. 低耦合。View可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
  1. 可重用性。可以把一些视图的逻辑放在ViewModel里面,让很多View重用这段视图逻辑。
  1. 独立开发。开发人员可以专注与业务逻辑和数据的开发(ViewModel)。设计人员可以专注于界面(View)的设计。
  1. 可测试性。可以针对ViewModel来对界面(View)进行测试

MVP:本小编没有接触,希望可以得到大家的帮助。可以在下面留言。

3.为什么代理要用weak?代理的delegate和dataSource有什么区别?block和代理的区别?

代理是使用weak来修饰的。1.使用weak是为了避免循环引用。2.当使用weak修饰的属性,当对象释放的时候,系统会对属性赋值nil,object-c有个特性就是对nil对象发送消息也就是调用方法,不会cash。delegate:表示代理,代理可以让A对象通知B对象,我(A)发生的变化,前提B遵循了A的代理,并且实现了A的代理方法。dataSource:表示数据源,如果A对象声明了数据源,当我们创建A对象的时候,我们就该实现数据源,来告诉A,他所需要的一些数据。例如:tableView数据源方法,需要告诉它,我要实现几组cell,每组cell多少行cell,实现的cell什么样式,什么内容 同样delegate和dataSource,都是可以使用require和optional来修饰的。

代理和Block的区别

相同点:代理和Block大多是我们都可以用来做倒序传值的。我们都得注意避免循环引用。 不同点:代理使用weak修饰,代理必须先声明方法。当我们调用代理的时候要判断是否已经实现。 block:使用的是copy来修饰,block保存的是一段代码,其实也就是一个函数。当我们调用block的时候要判断是否已经实现。

4.属性的实质是什么?包括哪几个部分?属性默认的关键字都有哪些?@dynamic关键字和@synthesize关键字是用来做什么的?

属性是描述类的特征,也就是具备什么特性。三个部分,带下划线的成员变量,get、setter方法。 默认关键字:readwrite,assign, atomic; @dynamic :修饰的属性,其getter和setter方法编译器是不会自动帮你生成。必须自己是实现的。 @synthesize:修饰的属性,其getter和setter方法编译器是会自动帮你生成。不必自己实现,可以指定与属性相对应的成员变量。

上一篇:超全!iOS 面试题16-20
下一篇:面试题中级
选择城市和中心
贵州省

广西省

海南省