zoukankan      html  css  js  c++  java
  • iOS 面试题:OC基本概念题

    1.什么是类和对象?


    类是一组具有同样特征和功能的事物的抽象


    对象描写叙述了一个物体的特征和行为实现


    类是对象的抽象 对象是类的实例


    2.OC中定义类,创建对象,使用对象.


    OC中定义类分为接口部分,实现部分

    接口部分:对外声明类的特征和行为

    实现部分:实现方法,即类的行为实现


    创建对象须要进行分配内存空间和初始


    3.声明方法,依据需求.区分:方法声明,方法实现,方法运行


    4.继承.继承的全部特点


    子类能够继承父类全部的声明的方法和除私有的以外实例变量

    父类不能使用子类所创建的方法和实例变量


    5.self和super


    self 给对象发送消息 运行该类的方法

    super 给对象发送消息 运行父类的方法


    6.初始化方法.会依据需求自己定义,可以写出完整的实现


    例: - (id) initWithName:(NSString *)name

                                    sex:(NSString *)sex

                                    age:(int)age

    {

           self = [super init];

           if(self)

           {

             self.name = name;

             self.sex = sex;

             _age = age

           }

           return self;

    }


    7.实例变量的可见度,以及各自的特点,默认可见度是什么?

       怎样在类的外部,操作默认可见度的实例变量.


    @public 公有的

    @protected 保护的(默认的)  

    @private  私有的


    在类的外部,操作默认可见度的实例变量 能够定义实例变量的属性,也能够声明和实现setter和getter方法


    8.什么是setter,getter方法,怎样声明?


    设置器 - (void) setName:(NSString *)name

    訪问器 - (NSString *) name;


    9.属性的作用.怎样声明属性,怎样实现属性(声明和实现所相应的keyword)


    作用:提供外部訪问 自己主动生成setter和getter方法

    @propert (属性的属性) 返回值或參数类型 属性的名字 

    @synthesize 属性的名字 = 实例变量


    10.属性的三个特性?没有特性都有哪些内容,使用场景,特点作用


    读写设置:readonly(仅仅读) readwrite(默认)

    语义设置: assign(默认 既能够修饰基本数据类型还能够修饰对象)

                     retain(修饰对象) 

                     copy(修饰对象 而且所修饰的对象要遵守<NSCopying>协议)

    原子性:noatomic(不能保证多线程安全) 

                atomic(默认 保证多线程安全)


    11.属性的setter和getter方法的内部实现


    用retain修饰

    (void) setName:(NSString *)name

    {

          if(_name != name)

          {

               [_name release];

                _name = [name retain];

          }

    }

    (NSString *) name

    {

         return [[_name retain] autorelease];

    }


    12.类的扩展.(类目 延展 协议(一对方法)).代理(运行协议里方法的对象)


    类目(category):为没有源码的类加入方法 没有实例变量 

    类目的声明: @interface 类的名字 (类目的名字) 

                        @end

    类目的实现: @implementation 类的名字

                        @end

    注:类目的方法若与类的方法同样 类目的方法优先级高


    延展(extention):(匿名类目)管理”私有”方法 写在.m文件里 能够有实例变量

    延展的声明:@interface 类的名字 ()

                       @end

    注:声明在延展里的方法必须实现


    协议(protocol):没有方法实现 仅仅有方法声明 仅仅有.h文件

                              默认keyword@require 必须实现 @optionol 能够不实现

    协议的声明:@protocol 协议的名字 <NSobject>

    注:一个类能够接受多个协议,在< >中用”,”分隔开.用协议能够实现多继承


    13.foundation(框架).NSString,NSArray,NSDictionary,NSSet(对象的内容互异).(区分可变和不可变,创建对象,经常用法,类的特点)


    NSString  不可变(自身)

    命名规则

    NSString

    第一,创建                                    initWithFormat或者stringWithFormat
    第二,求字符串长度                      length
    第三,推断字符串是否相等           isEqualToString
    第四,字符串替换                         stringByReplacingOccurrenceOfString:withString:
    第五,字符串比較                         compare  返回值枚举
    第六,字符串拼接                         stringByAppendingFormat
    第七,求字符                                substringFromlndex
    第八,查询字符串                         rangeOfString
    第九,前缀,后缀                            hasPrefix    hasSuffix
    第十,字母大写                             uppercaseString

    NSMutableString     可变字符串

    第一,创建  使用父类继承的方法或者使用自己的创建方法      initWithCapacity
    第二, 增         appendFormat:             ///////////
    第三, 删         deleteCharacterslnRange:
    第四, 改         replaceCharacterslnRange:
    第五, 查         insertString:atlndex:        /////////////////



    NSArray      容器  仅仅能存储对象(继承自NSObject的类) 不可变的数组 不能加入 不能删除,不能改动, 
    第一,创建              initWithObjects:     arrayWithObjects:
    第二,看元素          ,objectAtIndex:
    第三,数组个数,      [array count]

    NSMutableArray    可变字符串

    第一,增(加入),       addObject
    第二,删                  removeObjectAtIndex:           removeObject       removeAllObjects
    第三,插入              insertObject:  atIndex:
    第四,替换              replaceObjectAtlndex: withObject:
    第五,交换              exchangeObjectAtIndex:(目的串)     withObjectAtIndex:(来源串)


    NSValue , NSNumber 容器,转换作用

    NSValue     转换结构体为对象
    NSNumber 转换基本数据类型为对象





    14.内存管理


    对内存管理的理解:

    对象全部权:通过retain alloc copy 是对象的引用计数加1

    内存泄露:仅仅分配使用了一块内存,没有释放

    过度释放:释放多次

    野指针:指针指向不存在的对象

  • 相关阅读:
    大数据开源组件汇总
    centos6环境下大数据组件单独安装配置
    大数据平台架构组件选择与运用场景
    [LeetCode] 210. 课程表 II
    [LeetCode] 209. 长度最小的子数组
    [LeetCode] 208. 实现 Trie (前缀树)
    [LeetCode] 207. 课程表
    [LeetCode] 206. 反转链表
    [LeetCode] 205. 同构字符串
    [LeetCode] 204. 计数质数
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3855479.html
Copyright © 2011-2022 走看看