1、do while 語句和while語句的區(qū)別,并寫出幾個死循環(huán):
1>、do while 語句至少執(zhí)行一次循環(huán),而while語句括號中表達式為真,才執(zhí)行循環(huán)體。
2>、while (1) {}、for (;;)
2、switch 語句if語句區(qū)別與聯(lián)系以及它的優(yōu)勢在哪里?
1>均表示條件判斷,switch語句表達式只能處理是整型、字符串和枚舉類型,而選擇流程語句則沒有這樣的限制。但switch語句比選擇流程控制語句效率更高。
3、協(xié)議的基本概念和協(xié)議中方法默認類型:
1>、oc中的協(xié)議是一個方法列表,且多少有點相關。它的特點是可以被任何(實現(xiàn)),但它并是類,自身不會實現(xiàn)這樣方法,而是其他人來實現(xiàn)。協(xié)議經(jīng)常用來實現(xiàn)委托對象(委托設計模式)。在協(xié)議中的方法有些是必須實現(xiàn)(@required修飾),有些可實現(xiàn)可不實現(xiàn)(@optional修飾)。
4、@public、@protect、@private它們的含義與作用:
1>、@public:對象的實例變量的作用域在任意地方都可以被訪問。
2>、@protected:對象的實例變量作用域在本類和子類都可以被訪問。
3>、@private:實例變量的作用域只能在本類后子類都可以被訪問。
5、通過指針運算符(->)能夠訪問到private方法嗎?OC語言中還提供哪些方法能直接或間接訪問的訪問實例變量?
1>、通過指針運算符是不可以訪問private方法,可以通過合成存取器訪問實例變量,也可以自定義setter和getter方法訪問實例變量。KVC—鍵值編碼,間接方式訪問實例變量。
6、什么是retaincount:
1>、每一個對象都默認有一個retaincount的屬性,數(shù)值的多少表示有幾個實例正在引用它。它為0時,系統(tǒng)會自動調(diào)用dealloc方法,將內(nèi)存回收。
7、解釋 self = [super init]方法:
1>、容錯處理,當父類初始化失敗,會返回一個nil,表示初始化失敗。由于繼承的關系,子類是需要擁有父類的實例和行為的,因此,我們必須先初始化父類,然后在初始化子類。
8、當我們釋放對象時,為什么需要調(diào)用[super dealloc]方法?
1>、子類是繼承父類,那么子類中有一些實例變量(對象),是繼承父類的,因此,我們需要調(diào)用父類方法,將父類所擁有的實例進行釋放。
2>、先將子類所擁有的實例進行釋放,然后再釋放父類的。
9、object-c 有私有方法嗎?私有變量呢?
1>私有方法是有的稱:延展。私有變量也是有的(@private)。
10、為什么delegate(代理)屬性都是assign而不是retain的?
1>、防止循環(huán)引用,以至于對象無法得到正確的釋放。