ios應(yīng)用開(kāi)發(fā)Objective

ios應(yīng)用開(kāi)發(fā)Objective

ID:47154155

大?。?00.34 KB

頁(yè)數(shù):37頁(yè)

時(shí)間:2019-08-13

ios應(yīng)用開(kāi)發(fā)Objective_第1頁(yè)
ios應(yīng)用開(kāi)發(fā)Objective_第2頁(yè)
ios應(yīng)用開(kāi)發(fā)Objective_第3頁(yè)
ios應(yīng)用開(kāi)發(fā)Objective_第4頁(yè)
ios應(yīng)用開(kāi)發(fā)Objective_第5頁(yè)
資源描述:

《ios應(yīng)用開(kāi)發(fā)Objective》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。

1、ios應(yīng)用開(kāi)發(fā)Objective-C筆試題 1.Objective-C中,與alloc語(yǔ)義相反的方法是dealloc還是release?與retain語(yǔ)義相反的方法是dealloc還是release,為什么?需要與alloc配對(duì)使用的方法是dealloc還是release,為什么?  答:alloc與dealloc語(yǔ)意相反,alloc是創(chuàng)建變量,dealloc是釋放變量。retain對(duì)應(yīng)release,retain保留一個(gè)對(duì)象。調(diào)用之后,變量的計(jì)數(shù)加1?;蛟S不是很明顯,在這有例為證:.-?(void)?setName?:?(NSString*)?name?{??.

2、?????[name?retain];??.?????[myname?release];??.?????myname?=?name;??.}??  我們來(lái)解釋一下:設(shè)想,用戶在調(diào)用這個(gè)函數(shù)的時(shí)候,他注意了內(nèi)存的管理,所以他小心的寫了如下代碼:.NSString?*?newname?=?[[NSString?alloc]?initWithString:?@"John"];??.[aClass?setName:?newname];??.[newname?release];??  我們來(lái)看一看newname的計(jì)數(shù)是怎么變化的。首先,它被alloc,count=1;然后,

3、在setName中,它被retain,count=2;最后,用戶自己釋放newname,count=1,myname指向了newname。這也解釋了為什么需要調(diào)用[mynamerelease]。我們需要在給myname賦新值的時(shí)候,釋放掉以前老的變量。retain之后直接dealloc對(duì)象計(jì)數(shù)器沒(méi)有釋放。alloc需要與release配對(duì)使用,因?yàn)閍lloc這個(gè)函數(shù)調(diào)用之后,變量的計(jì)數(shù)加1。所以在調(diào)用alloc之后,一定要調(diào)用對(duì)應(yīng)的release。另外,在release一個(gè)變量之后,他的值仍然有效,所以最好是后面緊接著再var=nil。  2.在一個(gè)對(duì)象的方法里面

4、:  self.name=“object”;和name=”object”  有什么不同嗎??  答:self.name="object"會(huì)調(diào)用對(duì)象的setName()方法,name="object"會(huì)直接把object賦值給當(dāng)前對(duì)象的name屬性?! backcolor=transparent][backcolor=transparent]  3.這段代碼有什么問(wèn)題嗎:.[backcolor=transparent]@implementation?Person??.[backcolor=transparent]-?(void)setAge:(int)newAge

5、?{??.[backcolor=transparent]self.age?=?newAge;??.[backcolor=transparent]}??.[backcolor=transparent]?.@end??  答:會(huì)進(jìn)入死循環(huán)?! ?.什么是retaincount?  答:引用計(jì)數(shù)(refcount或者retaincount)。對(duì)象的內(nèi)部保存一個(gè)數(shù)字,表示被引用的次數(shù)。例如,某個(gè)對(duì)象被兩個(gè)指針?biāo)赶颍ㄒ茫┠敲此膔etaincount為2。需要銷毀對(duì)象的時(shí)候,不直接調(diào)用dealloc,而是調(diào)用release。release會(huì)讓retaincount減1,

6、只有retaincount等于0,系統(tǒng)才會(huì)調(diào)用dealloc真正銷毀這個(gè)對(duì)象?! ?.以下每行代碼執(zhí)行后,person對(duì)象的retaincount分別是多少.Person?*person?=?[[Person?alloc]?init];?count?1??.[person?retain];?count?2??.[person?release];count?1??.[person?release];retain?count?=?1;??  6.為什么很多內(nèi)置類如UITableViewController的delegate屬性都是assign而不是retain的?  

7、答:會(huì)引起循環(huán)引用。  7.定義屬性時(shí),什么情況使用copy,assign,和retain。  答:assign用于簡(jiǎn)單數(shù)據(jù)類型,如NSInteger,double,bool,retain和copy用戶對(duì)象,copy用于當(dāng)a指向一個(gè)對(duì)象,b也想指向同樣的對(duì)象的時(shí)候,如果用assign,a如果釋放,再調(diào)用b會(huì)crash,如果用copy的方式,a和b各自有自己的內(nèi)存,就可以解決這個(gè)問(wèn)題。retain會(huì)使計(jì)數(shù)器加一,也可以解決assign的問(wèn)題。另外:atomic和nonatomic用來(lái)決定編譯器生成的getter和setter是否為原子操作。在多線程環(huán)境下,原子操作是

8、必要的,否

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。