iOS 面試題:OC基本概念題

來源:互聯網
上載者:User

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.屬性的作用.如何聲明屬性,如何?屬性(聲明和實現所對應的關鍵字)


作用:提供外部存取 自動產生setter和getter方法

@propert (屬性的屬性) 返回值或參數類型 屬性的名字 

@synthesize 屬性的名字 = 執行個體變數


10.屬性的三個特性?沒有特性都有哪些內容,使用情境,特點作用


讀寫設定:readonly(唯讀) readwrite(預設)

語義設定: assign(預設 既可以修飾基礎資料型別 (Elementary Data Type)還可以修飾對象)

                 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檔案

                          預設關鍵字@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 轉換基礎資料型別 (Elementary Data Type)為對象





14.記憶體管理


對記憶體管理的理解:

對象所有權:通過retain alloc copy 是對象的引用計數加1

記憶體泄露:只分配使用了一塊記憶體,沒有釋放

過度釋放:釋放多次

野指標:指標指向不存在的對象

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.