iOS开发:重写父类方法的正确步骤与override使用指南
馃 涓轰粈涔堝埆浜洪噸鍐欐柟娉曚笉鍑洪敊锛屼綘涓€鐢ㄥ氨宕╋紵鏄笉鏄€诲湪鐤戞儜锛氭槑鏄庣収鐫€鏂囨。鍐欑殑锛屾€庝箞杩樻槸鎶ラ敊锛熶粖澶╁挶浠氨鍞犳槑鐧借繖涓簨鍎匡紒
馃殌 涓€銆佸繀椤荤煡閬撶殑override涓夊師鍒欙紙鏂版墜蹇呯湅锛侊級
"鎴戞槑鏄庣户鎵夸簡UIViewController锛屼负鍟ヨ繕瑕乷verride锛? 杩欐槸涓婂懆鏂版墜缇ら噷鏈€鐏殑闂銆傞噸鍐欑埗绫绘柟娉曞彲涓嶆槸闅忎究鐜╃殑锛岃浣忚繖涓変釜閾佸緥锛?/p>
- 鈥?strong>鈥嬪繀椤荤敤override鍏抽敭瀛椻€?/strong>鈥嬶紙鑻规灉瀹樻柟鏂囨。璇寸殑锛侊級
- 鈥?strong>鈥嬪弬鏁扮被鍨嬭瀹屽叏涓€鑷粹€?/strong>鈥嬶紙灏戜釜鍙傛暟閮戒笉琛岋級
- 鈥?strong>鈥嬭闂潈闄愪笉鑳芥瘮鐖剁被浣庘€?/strong>鈥嬶紙private鏀筽ublic鍙互锛屽弽杩囨潵灏卞穿锛?/li>
涓句釜馃尠锛氭兂閲嶅啓viewDidLoad鏂规硶锛屽繀椤诲啓鎴愶細
swift澶嶅埗override func viewDidLoad() { super.viewDidLoad() // 浣犵殑浠g爜 }
馃挜 閲嶇偣鏉ヤ簡锛佲€?strong>鈥?0%鐨勫穿婧冮兘鏄洜涓哄繕璁板啓super璋冪敤鈥?/strong>鈥嬶紝鐗瑰埆鏄敓鍛藉懆鏈熸柟娉曪紒
馃洜 浜屻€佷簲姝ユ悶瀹氭柟娉曢噸鍐欙紙璺熺潃鍋氬氨瀵逛簡锛?/h3>
- 鈥?strong>鈥嬫煡鏂囨。纭鍙噸鍐欌€?/strong>鈥嬶紙甯?code>open鎴?code>public鐨勬柟娉曟墠鑳介噸鍐欙級
- 鈥?strong>鈥嬪湪瀛愮被閲屾暡override鈥?/strong>鈥嬶紙Xcode浼氳嚜鍔ㄦ彁绀哄€欓€夋柟娉曪級
- 鈥?strong>鈥嬫鏌ュ弬鏁颁竴鑷存€р€?/strong>鈥嬶紙绫诲瀷銆佷釜鏁般€佸弬鏁板悕閮借瀵癸級
- 鈥?strong>鈥嬭皟鐢╯uper鏂规硶鈥?/strong>鈥嬶紙闄ら潪鏂囨。鏄庣‘璇存槑涓嶉渶瑕侊級
- 鈥?strong>鈥嬫坊鍔犳柊鍔熻兘鈥?/strong>鈥嬶紙杩欐墠鏄噸鍐欑殑鎰忎箟鍟婏紒锛?/li>
鈿狅笍 娴嬭瘯灏忔妧宸э細鎸変綇Command鐐规柟娉曞悕锛岃兘鐪嬪埌鐖剁被鍘熷瀹炵幇锛岃繖涓秴瀹炵敤锛?/p>
馃挕 涓夈€佹柊鎵嬫渶甯歌俯鐨勪笁澶у潙锛堥檮瑙e喅鏂规锛?/h3>
閿欒绫诲瀷 | 閿欒绀轰緥 | 姝g‘鍐欐硶 | 宕╂簝姒傜巼 |
---|---|---|---|
蹇樿override | func 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>
- 蹇呴』鍏堣皟鐢╯uper.init
- 瑕佸鐞唕equired鍒濆鍖栧櫒
- 璁板緱鍔?code>convenience鍏抽敭瀛楀悧锛燂紙杩欎釜瑕佺湅鍏蜂綋鎯呭喌锛?/li>
Q锛氫负浠€涔堥噸鍐檈quals鏂规硶蹇呴』閲嶅啓hash鏂规硶锛?br/> A锛氳繖鏄疭wift闆嗗悎绫荤殑娼滆鍒欙紝涓嶇劧瀵硅薄鏀捐繘闆嗗悎浼氬嚭鐏靛紓浜嬩欢锛?/p>
鏈€鍚庤涓墡蹇冪殑浜嬪疄锛氣€?strong>鈥?0%鐨?閲嶅啓涓嶇敓鏁?闂锛岄兘鏄洜涓烘病浠旂粏鐪嬫帶鍒跺彴璀﹀憡鈥?/strong>鈥嬶紒涓嬫閬囧埌闂锛屽厛CMD+Shift+Y鎵撳紑璋冭瘯闈㈡澘鐪嬬湅锛岃兘鐪佷笅鍗婂ぉ鏃堕棿銆傜紪绋嬭繖鐜╂剰鍟婏紝鏈夋椂鍊欑湡寰楀儚鑰佷腑鍖婚棶璇娾€斺€旀湜锛堢湅鎶ラ敊锛夈€侀椈锛堝惉绯荤粺璀﹀憡锛夈€侀棶锛堟煡鏂囨。锛夈€佸垏锛堜笅鏂偣锛?..
本文由嘻道妙招独家原创,未经允许,严禁转载