`

ios技术面试题

    博客分类:
  • ios
 
阅读更多

1.Difference between shallow copy and deep copy?

浅复制 只拷贝地址 不拷贝地址指向的对象

深复制 拷贝地址 并且指向拷贝的新对象

2.What is advantage of categories? What is difference between implementing a category and inheritance?

 

categories: 在不影响或修改原来的类别或模组的情况下去修改原有的功能,增加新的功能

3.Difference between categories and extensions?

 

categories: 在不影响或修改原来的类别或模组的情况下去修改原有的功能,增加新的功能 

4.Difference between protocol in objective c and interfaces in java?

 

暂时觉得它们是一样的 protocol 可以被继承 interfaces 不可以

在java 中的interfaces 在 objective-c 中就是 protocol

在java 中的 class 在 objective-c 中就是 interface


5.What are KVO and KVC?

 

转自 http://magicalboy.com/kvc_and_kvo/

 

一个对象拥有某些属性。比如说,一个 Person 对象有一个 name 和一个 address 属性。以 KVC 说法,Person 对象分别有一个 value 对应他的 name 和 address 的 key。 key 只是一个字符串,它对应的值可以是任意类型的对象。从最基础的层次上看,KVC 有两个方法:一个是设置 key 的值,另一个是获取 key 的值。如下面的例子: 

 

 

void changeName(Person *p, NSString *newName)
{
 
    // using the KVC accessor (getter) method
    NSString *originalName = [p valueForKey:@"name"];
 
    // using the KVC  accessor (setter) method.
    [p setValue:newName forKey:@"name"];
 
    NSLog(@"Changed %@'s name to: %@", originalName, newName);
 
}

  现在,如果 Person 有另外一个 key 配偶(spouse),spouse 的 key 值是另一个 Person 对象,用 KVC 可以这样写:

 

void logMarriage(Person *p)
{
 
    // just using the accessor again, same as example above
    NSString *personsName = [p valueForKey:@"name"];
 
    // this line is different, because it is using
    // a "key path" instead of a normal "key"
    NSString *spousesName = [p valueForKeyPath:@"spouse.name"];
 
    NSLog(@"%@ is happily married to %@", personsName, spousesName);
 
}

 Key-Value Observing (KVO) 建立在 KVC 之上,它能够观察一个对象的 KVC key path 值的变化。举个例子,用代码观察一个 person 对象的 address 变化,以下是实现的三个方法:

  • watchPersonForChangeOfAddress: 实现观察
  • observeValueForKeyPath:ofObject:change:context: 在被观察的 key path 的值变化时调用。
  • dealloc 停止观察static NSString *const KVO_CONTEXT_ADDRESS_CHANGED = @"KVO_CONTEXT_ADDRESS_CHANGED"
     
    @implementation PersonWatcher
     
    -(void) watchPersonForChangeOfAddress:(Person *)p
    {
     
        // this begins the observing
        [p addObserver:self
            forKeyPath:@"address"
               options:0
               context:KVO_CONTEXT_ADDRESS_CHANGED];
     
        // keep a record of all the people being observed,
        // because we need to stop observing them in dealloc
        [m_observedPeople addObject:p];
    }
     
    // whenever an observed key path changes, this method will be called
    - (void)observeValueForKeyPath:(NSString *)keyPath
                          ofObject:(id)object
                            change:(NSDictionary *)change
                           context:(void *)context
     
    {
        // use the context to make sure this is a change in the address,
        // because we may also be observing other things
        if(context == KVO_CONTEXT_ADDRESS_CHANGED) {
            NSString *name = [object valueForKey:@"name"];
            NSString *address = [object valueForKey:@"address"];
            NSLog(@"%@ has a new address: %@", name, address);
        }
    }
     
    -(void) dealloc;
    {
     
        // must stop observing everything before this object is
        // deallocated, otherwise it will cause crashes
        for(Person *p in m_observedPeople){
            [p removeObserver:self forKeyPath:@"address"];
        }
     
        [m_observedPeople release];
        m_observedPeople = nil;
     
        [super dealloc];
     
    }
     
    -(id) init;
    {
        if(self = [super init]){
            m_observedPeople = [NSMutableArray new];
        }
     
        return self;
    }
     
    @end
      这就是 KVO 的作用,它通过 key path 观察对象的值,当值发生变化的时候会收到通知。


6.What is purpose of delegates?

7.What are mutable and immutable types in Objective C?

8.When we call objective c is runtime language what does it mean?

9.what is difference between NSNotification and protocol?

10.What is push notification?

11.Polymorphism?

12.Singleton?

单例

13.What is responder chain?

14.Difference between frame and bounds?

15.Difference between method and selector?

16.Is there any garbage collection mechanism in Objective C.?

17.NSOperation queue?

18.What is lazy loading?

19.Can we use two tableview controllers on one viewcontroller?

20.Can we use one tableview with two different datasources? How you will achieve this?

21.What is advantage of using RESTful webservices?

22.When to use NSMutableArray and when to use NSArray?

23.What is the difference between REST and SOAP?

24.Give us example of what are delegate methods and what are data source methods of uitableview.

25.How many autorelease you can create in your application? Is there any limit?

26.If we don’t create any autorelease pool in our application then is there any autorelease pool already provided to us?

27.When you will create an autorelease pool in your application?

28.When retain count increase?

29.Difference between copy and assign in objective c?

30.What are commonly used NSObject class methods?

31.What is convenience constructor?

32.How to design universal application in Xcode?

33.What is keyword atomic in Objective C?

34.What are UIView animations?

35.How can you store data in iPhone applications?

36.What is coredata?

37.What is NSManagedObject model?

38.What is NSManagedobjectContext?

39.What is predicate?

40.What kind of persistence store we can use with coredata?

分享到:
评论

相关推荐

    iOS2018面试题

    根据给定的文件信息,以下是对“iOS 2018面试题”中涉及的知识点进行的详细解析: ### 技术基础知识 1. **Objective-C为何被称为动态语言:** - Objective-C作为一门面向对象的编程语言,其动态特性主要体现在...

    2018最新iOS面试题全集

    这份"2018最新iOS面试题全集"无疑是iOS开发者提升自我、准备面试的关键参考资料。以下将根据标题、描述以及标签,深入探讨其中可能包含的重要知识点。 一、iOS基础 这份资料可能会涵盖iOS开发的基础知识,包括...

    2018iOS面试题汇总

    ### 2018 iOS面试题汇总解析 #### 一、设计模式的理解及常见类型 设计模式是指在软件开发过程...以上总结了2018年iOS面试题中涉及的一些核心知识点,希望能够帮助开发者更好地理解和掌握iOS开发中的重要概念和技术。

    2022年最新iOS面试题附答案.docx

    iOS 面试题附答案 本文主要讲解 iOS 面试题的相关知识点,包括类和结构体的区别、GCD 的概念和使用等。 类和结构体的区别 在 Swift 中,类是引用类型,结构体是值类型。值类型在传递和赋值时将进行复制,而引用...

    上海iOS最新面试题汇总

    iOS面试题通常涵盖了Objective-C(OC)的基础,Swift语言特性,iOS框架的应用,以及软件工程和设计模式等多个方面。这里,我们将深入探讨这些关键知识点。 一、Objective-C基础 1. **面向对象编程**:理解类、对象...

    12个iOS技术面试题及答案总结

    在iOS技术面试中,面试官通常会关注应聘者的基础知识、实践经验以及问题解决能力。以下是一些常见的面试题及其解答: 一、如何绘制一个UIView? 在iOS中,自定义UIView通常涉及重写`drawRect:`方法。当你在该方法...

    iOS面试题汇总

    这一部分重点在于iOS平台的技术面试题,可能包括Swift或Objective-C语法、UIKit框架、内存管理、多线程、网络编程、数据持久化、动画效果、Auto Layout等。面试者需要熟悉苹果的开发环境Xcode,理解MVC、MVVM、...

    iOS一些常见面试题word

    在iOS开发领域,面试题是评估候选人技能的关键工具。这些题目通常涵盖Objective-C或Swift语言的基础,UIKit框架的使用,内存管理,多线程,网络编程,数据持久化,设计模式等多个方面。以下是一些iOS面试中常见的...

    iOS精华面试题 pdf和word版本.zip

    这份名为"IOS精华面试题 pdf和word版本.zip"的压缩包文件,显然是为了帮助iOS开发者准备面试而精心编纂的资源。它包含了PDF和Word两种格式,这为学习者提供了方便,可以根据个人喜好选择阅读方式。从描述来看,这份...

    2021-逻辑iOS最新面试题.pdf

    文档标题为“2021-逻辑iOS最新面试题.pdf”,这表明文档内容是关于iOS开发领域中的面试题目。从文档的【部分内容】来看,内容包含了多个与iOS开发相关的技术点,尤其是围绕Objective-C和Swift语言在iOS开发中的应用...

    iOS面试题合集

    ### iOS面试题合集知识点详解 #### 一、iOS中的锁机制 - **知识点概述**:iOS开发过程中,锁机制是实现多线程同步的重要手段之一。常用的锁机制包括互斥锁(`@synchronized`)、读写锁、NSLock、NSRecursiveLock等...

    iOS面试题及答案

    本文总结了 iOS 面试题及答案,涵盖了 OC 语言的基本特点、#import 与 @class 的区别、类目优缺点、内存管理的基本原则、ARC 技术、垃圾回收机制、深浅复制、堆栈区差别、用户自定义对象的拷贝、定义属性时的赋值...

    iOS 工程师面试题

    iOS工程师面试题主要涵盖了许多核心概念和技术,包括内存管理、对象通信、生命周期管理、文件操作、类声明与实现、视图层次、用户交互以及多线程等。以下是对这些知识点的详细解释: 1. **属性作用**:readwrite和...

    2015-04各大公司ios面试题

    "2015-04各大公司ios面试题"这个压缩包可能包含了当年一些知名的公司如唯品会等在招聘iOS开发者时所使用的面试题目。这些题目涵盖的知识点广泛,旨在考察应聘者的实际操作能力和理论理解。 从描述中的"包括通知代理...

    2018秋招iOS面试总结

    这个时期的面试不仅反映了当时的iOS技术趋势,也为后来的求职者提供了宝贵的参考经验。以下是对2018年秋招iOS面试中常见知识点的详尽解析: 1. **Objective-C与Swift基础**: - Objective-C:面试中常问的基础知识...

    阿里iOS面试题

    根据给定的信息,我们可以整理出一系列与iOS开发相关的知识点,特别是针对阿里巴巴的iOS面试题。以下是对这些知识点的详细解析: ### dSYM 文件 #### dSYM 文件简介 dSYM 文件是一种特殊的文件格式,用于存储 iOS ...

    ios经典面试题汇总

    在准备iOS相关的技术面试时,以下知识点是面试者需要掌握的重点内容。首先,求职者要精通iOS的UI开发,这涉及到使用UIKit框架进行用户界面的创建和管理。在编写代码时,需要能够熟练地操作UITableView等复杂表格视图...

    iOS 面试题整理

    iOS面试题整理主要涵盖了一些iOS开发中的核心概念和技术,包括对象复制、类别、继承、协议、KVC和KVO等。下面将详细解释这些知识点: 1. 浅复制与深复制: 浅复制只是复制对象的指针,指向相同的内存资源,而深复制...

Global site tag (gtag.js) - Google Analytics