首页 > 投稿 > 正文内容

iOS对象创建方法详解:从alloc init到new的实战指南

投稿2025-05-19 14:19:42

鈥?strong>鈥嬪紑澶达細鈥?/strong>鈥?br/> 浣犳槸涓嶆槸鍒氬iOS寮€鍙戯紝姣忔鐪嬪埌alloc init鍜?code>new灏变竴鑴告嚨锛熶负浠€涔堝埆浜哄啓鐨勪唬鐮侀噷涓€浼氬効鐢ㄨ繖涓紝涓€浼氬効鐢ㄩ偅涓紵闅鹃亾瀹冧滑涓嶆槸涓€鍥炰簨鍚楋紵鏇村穿婧冪殑鏄紝鏈夋椂鍊欑▼搴忚帿鍚嶅叾濡欓棯閫€锛屾槸涓嶆槸鍜屽璞″垱寤烘柟娉曟湁鍏崇郴锛熶粖澶╁挶浠氨鎺板紑浜嗘弶纰庝簡鑱婃竻妤氣€斺€斺€?strong>鈥媔OS閲屽垱寤哄璞″埌搴曟€庝箞鐜┾€?/strong>鈥嬶紵

锛堝伔鍋疯涓€鍙ワ紝鏂版墜濡備綍蹇€熸定绮夛紵鍏跺疄鍜屽啓浠g爜涓€鏍凤紝鍏堟妸鍩虹鎵撴墡瀹烇紒锛?/p>


alloc init鍜宯ew鍒板簳鏈変粈涔堝尯鍒紵

鍏堣缁撹锛氣€?strong>鈥?code>alloc init鍜?code>new閮借兘鍒涘缓瀵硅薄锛屼絾缁嗚妭涓婂樊寰楄繙浜嗭紒鈥?/strong>鈥?/p>

涓句釜鏍楀瓙馃尠锛?/p>

  • 濡傛灉浣犵敤new锛?/p>

    objective澶嶅埗
    NSString *str = [NSString new];  

    绠€鍗曠矖鏆达紝涓€姝ュ埌浣嶃€?/p>

  • 濡傛灉鐢?code>alloc init锛?/p>

    objective澶嶅埗
    NSString *str = [[NSString alloc] init];  

    鍒嗕袱姝ヨ蛋锛屽厛鍒嗛厤鍐呭瓨锛屽啀鍒濆鍖栥€?/p>

鈥?strong>鈥嬪叧閿尯鍒細鈥?/strong>鈥?/p>

  1. 鈥?strong>鈥嬬伒娲绘€р€?/strong>鈥嬶細alloc init鍙互鎷嗗紑鐢紝姣斿alloc涔嬪悗杩樿兘璋冪敤鍏朵粬鍒濆鍖栨柟娉曪紙姣斿initWithString:锛夛紝鑰?code>new鍙兘璋冪敤榛樿鐨?code>init銆?/li>
  2. 鈥?strong>鈥嬪巻鍙插師鍥犫€?/strong>鈥嬶細new鏄疧bjective-C鏃╂湡鐨勮娉曪紝鐜板湪鏇存帹鑽愮敤alloc init锛屽洜涓鸿兘閬垮厤涓€浜涙綔鍦ㄧ殑鍐呭瓨闂銆?/li>
  3. 鈥?strong>鈥嬩唬鐮佷範鎯€?/strong>鈥嬶細鑰佸徃鏈轰滑鏅亶鐢?code>alloc init锛屽洜涓虹湅鐫€鏇存竻鏅帮紝灏ゅ叾鏄渶瑕佷紶鍙傛暟鐨勬椂鍊欍€?/li>

涓轰粈涔堟帹鑽愮敤alloc init鑰屼笉鏄痭ew锛?/h3>

杩欎釜闂浼拌寰堝灏忕櫧閮芥兂闂€傗€?strong>鈥嬭鐧戒簡锛屽氨鏄€曚綘韪╁潙锛佲€?/strong>鈥?/p>

姣斿涓嬮潰杩欎釜鍦烘櫙锛?/p>

objective澶嶅埗
// 鐢╪ew鍒涘缓瀵硅薄  
MyClass *obj1 = [MyClass new];  

// 鐢╝lloc init鍒涘缓瀵硅薄  
MyClass *obj2 = [[MyClass alloc] initWithName:@"寮犱笁"];  

濡傛灉浣犵敤new锛屽氨鍙兘璋冪敤鏃犲弬鏁扮殑init鏂规硶銆備絾濡傛灉浣犳兂鑷畾涔夊垵濮嬪寲閫昏緫锛堟瘮濡傜粰瀵硅薄灞炴€ц祴鍊硷級锛屽氨蹇呴』鐢?code>alloc init銆?/p>

鈥?strong>鈥嬪啀鍒掍釜閲嶇偣锛氣€?/strong>鈥?/p>

  • 鈥?strong>鈥?code>alloc璐熻矗鍒嗛厤鍐呭瓨鈥?/strong>鈥嬶細鍛婅瘔绯荤粺鈥滄垜瑕佷竴鍧楀湴鐩栨埧瀛愨€濄€?/li>
  • 鈥?strong>鈥?code>init璐熻矗鍒濆鍖栤€?/strong>鈥嬶細鐩稿綋浜庘€滄妸鎴垮瓙瑁呬慨鎴愯兘浣忎汉鐨勬牱瀛愨€濄€?/li>
  • 鈥?strong>鈥?code>new鐩稿綋浜庝竴閿洊鎴?瑁呬慨鈥?/strong>鈥嬶細铏界劧蹇紝浣嗘病娉曡嚜瀹氫箟瑁呬慨椋庢牸銆?/li>

鑷棶鑷瓟锛氭牳蹇冮棶棰?/h3>

鈥?strong>鈥婹锛氶偅浠€涔堟椂鍊欒鐢╪ew锛熲€?/strong>鈥?br/> A锛氶櫎闈炰綘纭畾瀵硅薄鍙渶瑕佹渶绠€鍗曠殑鍒濆鍖栵紙姣斿NSString銆?code>NSArray杩欑涓嶅彲鍙樺璞★級锛屽惁鍒欌€?strong>鈥嬪敖閲忓埆鐢ㄢ€?/strong>鈥嬶紒灏ゅ叾鏄嚜瀹氫箟绫伙紝鑰佽€佸疄瀹炵敤alloc init鏇村畨鍏ㄣ€?/p>

鈥?strong>鈥婹锛氫负浠€涔堟湁鏃跺€欑敤new浼氬穿婧冿紵鈥?/strong>鈥?br/> A锛氬鏋滀綘鐨勭被閲嶅啓浜?code>init鏂规硶锛屼絾娌″鐞嗗ソ榛樿鍒濆鍖栭€昏緫锛堟瘮濡傛紡浜嗚皟鐢?code>[super init]锛夛紝鐢?code>new灏卞彲鑳藉嚭闂銆傝€岀敤alloc init鐨勮瘽锛屼綘鍙互鏄惧紡璋冪敤姝g‘鐨勫垵濮嬪寲鏂规硶锛屽噺灏戠炕杞︽鐜囥€?/p>

鈥?strong>鈥婹锛歋wift閲屾€庝箞鍒涘缓瀵硅薄锛熲€?/strong>鈥?br/> A锛歋wift鏇寸畝鍗曪紝鐩存帴MyClass()灏辫銆備絾搴曞眰鍏跺疄杩樻槸璋冪敤浜?code>alloc init锛屽彧涓嶈繃璇硶绯栧府浣犲皝瑁呭ソ浜嗐€?/p>


瀹炴垬瀵规瘮琛ㄦ牸

鈥?strong>鈥嬫柟娉曗€?/strong>鈥?/th>鈥?strong>鈥嬩紭鐐光€?/strong>鈥?/th>鈥?strong>鈥嬬己鐐光€?/strong>鈥?/th>鈥?strong>鈥嬮€傜敤鍦烘櫙鈥?/strong>鈥?/th>
鈥?strong>鈥媋lloc init鈥?/strong>鈥?/td>鐏垫椿锛屾敮鎸佽嚜瀹氫箟鍒濆鍖?/td>浠g爜閲忕◢澶?/td>闇€瑕佷紶鍙傛垨澶嶆潅鍒濆鍖栫殑瀵硅薄
鈥?strong>鈥媙ew鈥?/strong>鈥?/td>浠g爜绠€娲侊紝涓€姝ュ埌浣?/td>鏃犳硶鑷畾涔夊垵濮嬪寲閫昏緫绠€鍗曞璞℃垨鏃犲弬鏁扮殑榛樿鍒濆鍖?/td>

灏忕紪瑙傜偣

灏忕紪瑙夊緱锛屼綔涓烘柊鎵嬶紝鍏堣€佽€佸疄瀹炵敤alloc init锛岀瓑鐔熸倝浜嗗啀鐮旂┒鍏朵粬鏂规硶銆傗€?strong>鈥嬩唬鐮佷笉鏄秺鐭秺濂斤紝鑰屾槸瓒婃竻鏅拌秺濂斤紒鈥?/strong>鈥?灏ゅ叾鏄唴瀛樼鐞嗚繖绉嶅鏄撹俯鍧戠殑鍦版柟锛屽鍐欎袱琛屼唬鐮佸弽鑰岃兘鏁戝懡銆?/p>

鍙﹀锛屽埆琚?code>new鐨勭畝娲佽糠鎯戔€斺€斿畠灏卞儚鑷姩鎸℃苯杞︼紝寮€璧锋潵绠€鍗曪紝浣嗙湡瑕佷慨杞︾殑鏃跺€欙紝浣犺繛绂诲悎鍣ㄥ湪鍝兘鎵句笉鍒般€傗€?strong>鈥嬪熀纭€鎵撳ソ浜嗭紝浠ュ悗鐜╅珮绾ф妧宸ф墠鑳芥洿绋筹紒鈥?/strong>鈥?/p>

锛堝畬锛?/p>

搜索