第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用目標(biāo)C中類別的重寫方法

使用目標(biāo)C中類別的重寫方法

慕森王 2019-06-24 16:34:52
使用目標(biāo)C中類別的重寫方法是否可以使用類別覆蓋已經(jīng)使用類別實現(xiàn)的方法?就像這樣:1)原始方法-(BOOL) method {   return true;}2)過載法-(BOOL) method {   NSLog(@"error?");    return true; }這是可行的,還是非法的?
查看完整描述

3 回答

?
喵喵時光機

TA貢獻1846條經(jīng)驗 獲得超7個贊

盡管Object-C語言目前允許您使用類別來覆蓋類繼承的方法,即使是類接口中聲明的方法,也強烈建議您不要這樣做。..類別不能代替子類。使用類別覆蓋方法有幾個重大缺點:

  • 當(dāng)類別覆蓋繼承的方法時,類別中的方法可以像往常一樣通過消息調(diào)用繼承的實現(xiàn)super..然而,如果類別覆蓋類別的類中存在的方法,則無法調(diào)用原始實現(xiàn).

  • 類別不能可靠地覆蓋同一類的另一個類別中聲明的方法。

    這個問題特別重要,因為許多Cocoa類都是使用類別實現(xiàn)的。您試圖覆蓋的框架定義方法本身可能已在類別中實現(xiàn),因此未定義優(yōu)先實現(xiàn)。

  • 某些類別方法的存在可能導(dǎo)致跨所有框架的行為更改。例如,如果您覆蓋windowWillClose:在NSObject上的類別中,程序中的所有窗口委托都使用類別方法進行響應(yīng);NSWindow的所有實例的行為可能會發(fā)生變化。在框架類中添加的類別可能會導(dǎo)致行為上的神秘變化,并導(dǎo)致崩潰。


查看完整回答
反對 回復(fù) 2019-06-24
?
米琪卡哇伊

TA貢獻1998條經(jīng)驗 獲得超6個贊

你可以通過調(diào)整類簇接近,或使用搖擺法技術(shù)。

否則,兩個或兩個以上的行為分類方法是未定


查看完整回答
反對 回復(fù) 2019-06-24
?
慕的地6264312

TA貢獻1817條經(jīng)驗 獲得超6個贊

避免類別方法名稱沖突

因為在類別中聲明的方法被添加到現(xiàn)有的類中,所以您需要非常小心地處理方法名稱。

如果在類別中聲明的方法的名稱與原始類中的方法相同,或同一類(甚至是超類)上的另一個類別中的方法相同,則未定義在運行時使用哪種方法實現(xiàn)的行為。如果您在自己的類中使用類別,這就不太可能成為問題,但是當(dāng)使用類別將方法添加到標(biāo)準(zhǔn)Cocoa或CocoaTouch類時可能會導(dǎo)致問題。

這是蘋果使用的更輕的觸摸,但要點是一樣的:你招致災(zāi)難,因為不可預(yù)測的行為是沉默的。


查看完整回答
反對 回復(fù) 2019-06-24
  • 3 回答
  • 0 關(guān)注
  • 657 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號