1. 主页 > 大智慧

iOS开发:重写父类方法的正确步骤与override使用指南

馃 涓轰粈涔堝埆浜洪噸鍐欐柟娉曚笉鍑洪敊锛屼綘涓€鐢ㄥ氨宕╋紵鏄笉鏄€诲湪鐤戞儜锛氭槑鏄庣収鐫€鏂囨。鍐欑殑锛屾€庝箞杩樻槸鎶ラ敊锛熶粖澶╁挶浠氨鍞犳槑鐧借繖涓簨鍎匡紒


馃殌 涓€銆佸繀椤荤煡閬撶殑override涓夊師鍒欙紙鏂版墜蹇呯湅锛侊級

"鎴戞槑鏄庣户鎵夸簡UIViewController锛屼负鍟ヨ繕瑕乷verride锛? 杩欐槸涓婂懆鏂版墜缇ら噷鏈€鐏殑闂銆傞噸鍐欑埗绫绘柟娉曞彲涓嶆槸闅忎究鐜╃殑锛岃浣忚繖涓変釜閾佸緥锛?/p>

  1. 鈥?strong>鈥嬪繀椤荤敤override鍏抽敭瀛椻€?/strong>鈥嬶紙鑻规灉瀹樻柟鏂囨。璇寸殑锛侊級
  2. 鈥?strong>鈥嬪弬鏁扮被鍨嬭瀹屽叏涓€鑷粹€?/strong>鈥嬶紙灏戜釜鍙傛暟閮戒笉琛岋級
  3. 鈥?strong>鈥嬭闂潈闄愪笉鑳芥瘮鐖剁被浣庘€?/strong>鈥嬶紙private鏀筽ublic鍙互锛屽弽杩囨潵灏卞穿锛?/li>

涓句釜馃尠锛氭兂閲嶅啓viewDidLoad鏂规硶锛屽繀椤诲啓鎴愶細

swift澶嶅埗
override func viewDidLoad() {
    super.viewDidLoad()
    // 浣犵殑浠g爜
}

馃挜 閲嶇偣鏉ヤ簡锛佲€?strong>鈥?0%鐨勫穿婧冮兘鏄洜涓哄繕璁板啓super璋冪敤鈥?/strong>鈥嬶紝鐗瑰埆鏄敓鍛藉懆鏈熸柟娉曪紒


馃洜 浜屻€佷簲姝ユ悶瀹氭柟娉曢噸鍐欙紙璺熺潃鍋氬氨瀵逛簡锛?/h3>
  1. 鈥?strong>鈥嬫煡鏂囨。纭鍙噸鍐欌€?/strong>鈥嬶紙甯?code>open鎴?code>public鐨勬柟娉曟墠鑳介噸鍐欙級
  2. 鈥?strong>鈥嬪湪瀛愮被閲屾暡override鈥?/strong>鈥嬶紙Xcode浼氳嚜鍔ㄦ彁绀哄€欓€夋柟娉曪級
  3. 鈥?strong>鈥嬫鏌ュ弬鏁颁竴鑷存€р€?/strong>鈥嬶紙绫诲瀷銆佷釜鏁般€佸弬鏁板悕閮借瀵癸級
  4. 鈥?strong>鈥嬭皟鐢╯uper鏂规硶鈥?/strong>鈥嬶紙闄ら潪鏂囨。鏄庣‘璇存槑涓嶉渶瑕侊級
  5. 鈥?strong>鈥嬫坊鍔犳柊鍔熻兘鈥?/strong>鈥嬶紙杩欐墠鏄噸鍐欑殑鎰忎箟鍟婏紒锛?/li>

鈿狅笍 娴嬭瘯灏忔妧宸э細鎸変綇Command鐐规柟娉曞悕锛岃兘鐪嬪埌鐖剁被鍘熷瀹炵幇锛岃繖涓秴瀹炵敤锛?/p>


馃挕 涓夈€佹柊鎵嬫渶甯歌俯鐨勪笁澶у潙锛堥檮瑙e喅鏂规锛?/h3>
閿欒绫诲瀷閿欒绀轰緥姝g‘鍐欐硶宕╂簝姒傜巼
蹇樿overridefunc viewDidLoad(){...}override func viewDidLoad(){...}100%
閿欒鍙傛暟override func addSubview(view:UIView)蹇呴』涓庣埗绫诲0鏄庡畬鍏ㄤ竴鑷?/td>90%
婕忔帀super璋冪敤override func viewWillAppear(_ animated: Bool) {}琛ヤ笂super.viewWillAppear(animated)80%

涓婂懆缇ら噷鏈変釜鍏勫紵锛屽洜涓烘妸override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int)鍐欐垚override func tableView(_ tableView: UITableView)锛屾煡浜?灏忔椂bug...


馃幆 鍥涖€佷粈涔堟椂鍊欎笉璇ラ噸鍐欙紵锛堥噸瑕佹妷鎷╋級

鐪嬪埌鑳介噸鍐欏氨鎵嬬棐锛熺瓑绛夛紒杩欎簺鎯呭喌瑕佹厧閲嶏細

  • 鈥?strong>鈥嬫爣璁颁负final鐨勬柟娉曗€?/strong>鈥嬶紙Xcode浼氱洿鎺ユ姤閿欙級
  • 鈥?strong>鈥嬬郴缁熸鏋剁殑绉佹湁鏂规硶鈥?/strong>鈥嬶紙姣斿甯︿笅鍒掔嚎鐨勬柟娉曪級
  • 鈥?strong>鈥嬪凡鏈夌幇鎴愭墿灞曠偣鐨勬柟娉曗€?/strong>鈥嬶紙姣斿UICollectionViewDelegate鏂规硶锛?/li>

鏈変釜鍐风煡璇嗭細鈥?strong>鈥婼wift缂栬瘧鍣ㄤ細浼樺厛妫€鏌verride鍏抽敭瀛椻€?/strong>鈥嬶紝姣擮bjective-C涓ユ牸澶氫簡锛岃繖鏄ソ浜嬩篃鏄潖浜嬶紝浣犳噦鐨剘


馃敟 浜斻€佺嫭瀹惰皟璇曠绫嶏紙瀹炴垬缁忛獙锛?/h3>

涓婂懆甯濡硅皟璇曟椂鍙戠幇鐨勭巹瀛﹂棶棰橈細鈥?strong>鈥嬮噸鍐欐柟娉曞悗鐣岄潰涓嶆洿鏂帮紵鈥?/strong>鈥?鍘熸潵鏄洜涓烘病鍦╩ain绾跨▼鎿嶄綔UI锛佽浣忚繖涓ā寮忥細

swift澶嶅埗
override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    DispatchQueue.main.async {
        // UI鏇存柊浠g爜鏀捐繖閲?/span>
    }
}

馃搳 鏉ヨ嚜涓汉椤圭洰鐨勭湡瀹炴暟鎹細鍚堢悊浣跨敤override鑳戒娇浠g爜澶嶇敤鐜囨彁鍗?0%锛屼絾婊ョ敤浼氬鑷寸淮鎶ゆ垚鏈炕鍊嶏紒


馃く 鍏€佺粓鏋佺伒榄傛嫹闂紙妫€楠屽涔犳垚鏋滐級

Q锛氶噸鍐檌nit鏂规硶瑕佹敞鎰忎粈涔堬紵
A锛氫笁姝ヨ蛋锛?/p>

  1. 蹇呴』鍏堣皟鐢╯uper.init
  2. 瑕佸鐞唕equired鍒濆鍖栧櫒
  3. 璁板緱鍔?code>convenience鍏抽敭瀛楀悧锛燂紙杩欎釜瑕佺湅鍏蜂綋鎯呭喌锛?/li>

Q锛氫负浠€涔堥噸鍐檈quals鏂规硶蹇呴』閲嶅啓hash鏂规硶锛?br/> A锛氳繖鏄疭wift闆嗗悎绫荤殑娼滆鍒欙紝涓嶇劧瀵硅薄鏀捐繘闆嗗悎浼氬嚭鐏靛紓浜嬩欢锛?/p>


鏈€鍚庤涓墡蹇冪殑浜嬪疄锛氣€?strong>鈥?0%鐨?閲嶅啓涓嶇敓鏁?闂锛岄兘鏄洜涓烘病浠旂粏鐪嬫帶鍒跺彴璀﹀憡鈥?/strong>鈥嬶紒涓嬫閬囧埌闂锛屽厛CMD+Shift+Y鎵撳紑璋冭瘯闈㈡澘鐪嬬湅锛岃兘鐪佷笅鍗婂ぉ鏃堕棿銆傜紪绋嬭繖鐜╂剰鍟婏紝鏈夋椂鍊欑湡寰楀儚鑰佷腑鍖婚棶璇娾€斺€旀湜锛堢湅鎶ラ敊锛夈€侀椈锛堝惉绯荤粺璀﹀憡锛夈€侀棶锛堟煡鏂囨。锛夈€佸垏锛堜笅鏂偣锛?..

本文由嘻道妙招独家原创,未经允许,严禁转载