Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
iOS×é¼þ»¯¿ª·¢ÊµÕ½¼Ç¼
 
×÷ÕߣºColin_¿ñ±¼µÄÂìÒÏ
  1691  次浏览      27
2021-2-25
 
±à¼­ÍƼö:
±¾ÎĽéÉÜÁ˹ØÓÚiOS×é¼þ»¯¿ª·¢µÄÏà¹Ø×ÊÁÏ£¬ÎÄÖÐͨ¹ýʾÀý´úÂë½éÉܵķdz£Ïêϸ£¬¶Ô´ó¼ÒµÄѧϰ»òÕß¹¤×÷¾ßÓÐÒ»¶¨µÄ²Î¿¼Ñ§Ï°¼ÛÖµ£¬ÐèÒªµÄÅóÓÑÃÇÏÂÃæÀ´Ò»Æðѧϰѧϰ°É£¡
±¾ÎÄÀ´×ÔÓÚGityuan£¬ÓÉAlice±à¼­¡¢ÍƼö¡£

1. ×é¼þ»¯ÐèÇóÀ´Ô´

Æð³õµÄÕâ¸öÏîÄ¿£¬AppÖ»ÓÐÒ»Ìõ²úÆ·Ïߣ¬´úÂëÂß¼­Ïà¶Ô±È½ÏÇåÎú£¬ºóÆÚËæ×Ź«Ë¾ÒµÎñµÄѸËÙ·¢Õ¹£¬ÏÖÔÚAppÀïÃæ³ÐÔØÁË´ó¸ÅÎåÁùÌõ²úÆ·Ïߣ¬Ã¿¸ö²úÆ·ÏßµÄÁ÷³ÌÓв¿·ÖÊÇÒ»ÑùµÄ£¬Ò²Óв¿·ÖÊDz»Ò»ÑùµÄ£¬Õâ¾ÍÐèÒª×ö¸÷ÖÖ¸÷ÑùµÄÅжϼ°¶¨ÖÆ»¯ÐèÇó¡£´ó¸Å×öÁËÒ»Äê¶àºó£¬³öÏÖÁ˲»Í¬²úÆ·ÏßÌá¹ýÀ´µÄÐèÇ󣬿ª·¢ÈËÔ±¶¼ÐèÒªÔÚÖ÷¹¤³ÌÖпª·¢£¬µ«ÊÇ¿ª·¢ÈËÔ±¿ª·¢µÄÊDz»Í¬µÄ²úÆ·Ïߣ¬Ò²µÃ½«Õû¸ö¹¤³ÌÅÜÆðÀ´£¬´úÂë¹ÜÀí¡¢²¢Ðпª·¢Ð§ÂÊ¡¢·ÖÖ§¹ÜÀí¡¢ÉÏÏßʱ¼äÃ÷ÏÔÓÐËùÏÞÖÆ¡£´ó¸Å¾ÍÔÚÈ¥Äêµ×£¬ÎÒÃǵÄÁìµ¼Ìá³öÁËÕâ¸öÎÊÌ⣬ϣÍû×÷³É×é¼þ»¯£¬½«´úÂëÖØ¹¹²ð·Ö³ÉÄ£¿é£¬ÔÚÖ÷¹¤³ÌÖÐ×é×°²ð·ÖµÄÄ£¿é£¬ÐγÉÒ»¸öÍêÕûµÄApp¡£

2. ×é¼þ»¯³õʶ

Ëæ×ÅÒµÎñÏßµÄÔö¶à£¬ÒµÎñµÄ¸´ÔÓ¶ÈÔö¼Ó£¬AppµÄ´úÂëÂß¼­¸´ÔÓ¶ÈÒ²Ôö¼ÓÁË£¬ºóÆÚµÄ¿ª·¢Î¬»¤³É±¾Ò²Ôö¼ÓÁË£¬ÎªÊ²Ã´ÕâÃ´ËµÄØ£¿ÒµÎñÂß¼­Ã»ÓзÖÀ࣬²éÕÒÎÊÌâЧÂʽµµÍ£¨Õë¶ÔÐÂÊÖ£©£¬ÔËÐÐÒ²ºÃÂýŶ£¬ÕæµÄºÃ·³Å¶......ÎÒÃÇÒª¸Ä±äÕâÖÖ¾ÖÃæ¡£¶ø×é¼þ»¯¿ª·¢£¬¾ÍÊǽ«Ò»¸öÓ·Ö×£¬¸´Ôӵĵ¥Ò»¹¤³ÌµÄÏîÄ¿, ¸ù¾Ý¹¦ÄÜ»òÕßÊôÐÔ½øÐзֽ⣬²ð·Ö³ÉΪ¸÷¸ö¶ÀÁ¢µÄ¹¦ÄÜÄ£¿é»òÕß×é¼þ ; È»ºó¸ù¾ÝÏîÄ¿ºÍÒµÎñµÄÐèÇ󣬰´ÕÕijÖÖ·½Ê½, ÈÎÒâ×éÖ¯³ÉÒ»¸öÓµÓÐÍêÕûÒµÎñÂß¼­µÄ¹¤³Ì¡£

×é¼þ»¯¿ª·¢µÄȱµã£º

´úÂëñîºÏÑÏÖØ

ÒÀÀµÑÏÖØ

ÆäËüapp½ÓÈëijÌõ²úÆ·ÏßÄÑÒÔ¼¯³É

ÏîÄ¿¸´ÔÓ¡¢Ó·Öס¢ÅӴ󣬱àÒëʱ¼ä¹ý³¤

ÄÑÒÔ×ö¼¯³É²âÊÔ

¶Ô¿ª·¢ÈËÔ±£¬Ö»ÄÜʹÓÃÏàͬµÄ¿ª·¢Ä£Ê½

......

×é¼þ»¯¿ª·¢µÄÓŵ㣺

ÏîÄ¿½á¹¹ÇåÎú

´úÂëÂß¼­ÇåÎú

²ð·ÖÁ£¶ÈС

¿ìËÙ¼¯³É

ÄÜ×öµ¥Ôª²âÊÔ

´úÂëÀûÓÃÂʸß

µü´úЧÂʸß

......

×é¼þ»¯µÄʵÖÊ£º¾ÍÊǶÔÏÖÓÐÏîÄ¿»òÐÂÏîÄ¿½øÐлù´¡¡¢¹¦Äܼ°ÒµÎñÂß¼­µÄ²ð·Ö£¬ÐγÉÒ»¸ö¸öµÄ×é¼þ¿â£¬Ê¹ËÞÖ÷¹¤³ÌÄÜÔÚ²ð·ÖµÄ×é¼þ¿âÀïÃæ²éÕÒÐèÒªµÄ¹¦ÄÜ£¬×é×°³ÉÒ»¸öÍêÕûµÄApp¡£

3. ×é¼þ»¯±Ø±¸µÄ¹¤¾ßʹÓÃ

×é¼þµÄ´æÔÚ·½Ê½ÊÇÒÔÿ¸öpod¿âµÄÐÎʽ´æÔڵġ£ÄÇôÎÒÃÇ×éºÏ×é¼þµÄ·½·¨¾ÍÊÇͨ¹ýÀûÓÃCocoaPodsµÄ·½Ê½Ìí¼Ó°²×°¸÷¸ö×é¼þ£¬ÎÒÃǾÍÐèÒªÖÆ×÷CocoaPodsÔ¶³Ì˽Óп⣬½«Æä·¢²»µ½¹«Ë¾µÄgitlab»òGitHub£¬Ê¹¹¤³ÌÄܹ»PodÏÂÔØÏÂÀ´¡£

GitµÄ»ù´¡ÃüÁ

echo "# test" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/c/test.git
git push -u origin master

GitÃüÁîµÄ¼òµ¥ÕûÀí

CocoaPodsÔ¶³Ì˽ÓпâÖÆ×÷£º

1¡¢Create Component Project

pod lib create ProjectName

2¡¢Use Git

echo "# test" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/c/test.git
git push -u origin master

3¡¢Edit podspec file

vim CoreLib.podspec

Pod::Spec.new do |s|
s.name = '×é¼þ¹¤³ÌÃû'
s.version = '0.0.1'
s.summary = 'summary'
s.description = <<-DESC
description
DESC
s.homepage = 'Ô¶³Ì²Ö¿âµØÖ·'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { '×÷Õß' => '×÷Õß' }
s.source = { :git => 'Ô¶³Ì²Ö¿âµØÖ·', :tag => s.version.to_s }
s.ios.deployment_target = '8.0'


s.source_files = 'Classes/**/*.{swift,h,m,c}'
s.resources = 'Assets/*'

s.dependency 'AFNetworking', '~> 2.3'
end

4¡¢Create tag

//create local tag
git tag '0.0.1'
»ò
git tag 0.0.1
//local tag push to remote
git push --tags
»ò
git push origin 0.0.1

//delete local tag
git tag -d 0.0.1
//delete remote tag
git tag origin :0.0.1

5¡¢Verify Component Project

pod lib lint --allow-warnings --no-clean

6¡¢Push To CocoaPods

pod repo add CoreLib git@git.test/CoreLib.git
pod repo push CoreLib CoreLib.podspec --allow-warnings

4. Ä£¿é²ð·Ö

Ä£¿é²ð·Ö&×éװͼ.jpeg

»ù´¡×é¼þ¿â£º

»ù´¡×é¼þ¿â·ÅһЩ×î»ù´¡µÄ¹¤¾ßÀ࣬±ÈÈç½ð¶î¸ñʽ»¯¡¢ÊÖ»úºÅ/Éí·ÝÖ¤/ÓÊÏäµÄÓÐЧУÑ飬ʵÖʾÍÊDz»»áÒÀÀµÒµÎñ£¬²»»áºÍÒµÎñÇ£³¶µÄÎļþ¡£

¹¦ÄÜ×é¼þ¿â£º

·ÖÏíµÄ·â×°¡¢Í¼Æ¬µÄÂÖ²¥¡¢ÅÜÂíµÆ¹¦ÄÜ¡¢ÍÆË͹¦ÄܵĶþ´Î·â×°£¬¼´¿ª·¢Ò»´Î£¬ÒÔºó¶¼ÄÜ¿ìËÙ¼¯³ÉµÄ¹¦ÄÜ¡£

ÒµÎñ×é¼þ¿â£º

µÇ¼×é¼þ¡¢ÊµÃû×é¼þ¡¢ÏûÏ¢×é¼þ¡¢½è¿î×é¼þ¡¢»¹¿î×é¼þ¡¢¸÷Ìõ²úÆ·Ïß×é¼þµÈ¡£

Öмä¼þ£¨×é¼þͨѶ£©£º

¸÷¸öÒµÎñ×é¼þ²ð·Ö³öÀ´ºó£¬×é¼þÖ®¼äµÄͨѶ¡¢´«²Î¡¢»Øµ÷¾ÍÒª¿¼ÂÇÁË£¬´Ëʱ¾ÍÐèÒªÒ»¸ö×é¼þͨѶµÄ¹¤¾ßÀàÀ´´¦Àí¡£

CocoaPodsÔ¶³Ì˽Óп⣺

ÿ¸ö²ð·Ö³öÈ¥µÄ×é¼þ´æÔÚµÄÐÎʽ¶¼ÊÇÒÔPodµÄÐÎʽ´æÔڵ쬲¢ÄÜ´ïµ½µ¥¶ÀÔËÐгɹ¦¡£

ËÞÖ÷¹¤³Ì£º

ËÞÖ÷¹¤³Ì¾ÍÊÇÒ»¸ö¿Ç£¬ÔÚ×é¼þ¿âÖÐѰÕÒÕâ¸ö¹¤³ÌËùÐèÒªµÄ×é¼þ£¬È»ºóÄùýÀ´×é×°³ÉÒ»¸öApp¡£

5. ×é¼þ¹¤³Ì¼æÈÝswift»·¾³

ÔÚ×ö×é¼þ»¯Ö®Ç°£¬Õâ¸öÏîĿʹÓõÄÊÇObjective-CÓïÑÔдµÄ£¬»¹Ã»ÓÐÖ§³ÖÔÚÏîÄ¿ÀïÃæÊ¹ÓÃSwiftÓïÑÔµÄÄÜÁ¦£¬¿¼Âǵ½ºóÆÚ¿Ï¶¨»áÍùSwiftÓïÑÔÇйýÈ¥µÄ£¬ÓÚÊǽè×ÅÕâ´ÎÖØ¹¹µÄ»ú»á£¬´´½¨µÄ×é¼þ¹¤³Ì¶¼ÊÇswift¹¤³Ì¡£

PodfileÎļþÐèÒªÌí¼Ó==use_frameworks!==

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
inhibit_all_warnings!
use_frameworks!
target 'CoreLib_Example' do
pod 'CoreLib', :path => '../'
end

ÕâÀïÆäʵÓиö´ó¿ÓÐèÒªÌØ±ð×¢Ò⣬ÔÚÖ§³ÖSwift»·¾³ºó£¬²¿·ÖObjective-CÓïÑÔµÄÈý·½¿â²ÉÓõÄÊÇ==¾²Ì¬¿â==£¬ÔÚOCÎļþÖÐÒýÓÃÈý·½¿âÍ·Îļþ£¬»áÒ»Ö±±¨Í·ÎļþÕÒ²»µ½£¬ÎÒÃÇÔÚÓöµ½Õâ¸öÎÊÌâʱÕÒ±éÁ˰ٶȣ¬¶¼Ã»ÕÒµ½½â¾ö·½°¸£¬ÕûÕû»¨ÁËÒ»¸öÐÇÆÚµÄʱ¼ä³¢ÊÔ¡£

½â¾ö·½°¸£ºÎÒÃǶÔÕâЩÈý·½¿â£¨Ö÷ÒªÓУºUMengAnalytics¡¢Bugly¡¢AMapLocation-NO-IDFA£©ÔÙ°üÒ»²ã£¬Ê¹ÓÃCocoaPodsÔ¶³Ì˽Óпâ¹ÜÀí£¬¶ÔÍⱩ¶ÎÒÃÇдµÄÎļþ£¬ÒýÓÃÎÒÃÇдµÄÍ·Îļþ£¬¾ÍÄܵ÷Óõ½¡£

Pod::Spec.new do |s|
s.name = ''
s.version = '0.0.1'
s.summary = '°ü×°¸ßµÂµØÍ¼¡¢·ÖÏí¡¢ÓÑÃËFramework.'
s.description = <<-DESC
DESC
s.homepage = ''
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { '' => '' }
s.source = { :git => '', :tag => s.version.to_s }
s.ios.deployment_target = '8.0'
s.source_files = ['Classes/UMMob/**/*.{h,m}','Classes/Bugly/**/*.{h,m}','Classes/AMap/**/*.{h,m}']
s.public_header_files = ['Classes/*.h']
s.libraries = 'sqlite3', 'c++', 'z', 'z.1.1.3', 'stdc++', 'stdc++.6.0.9'
s.frameworks = 'SystemConfiguration', 'CoreTelephony', 'JavaScriptcore', 'CoreLocation', 'Security', 'Foundation'
s.vendored_frameworks = 'Frameworks/**/*.framework'
s.xcconfig = { "FRAMEWORK_SEARCH_PATHS" => "Pods/WDContainerLib/Frameworks" }
s.requires_arc = true
end

6. ×é¼þÖ®¼äµÄͨѶ

ÔÚ½«ÒµÎñ¿ØÖÆÆ÷²ð·Ö³öÈ¥ºó£¬Èç¹ûÒ»¸ö×é¼þÒªµ÷ÓÃÁíÒ»¸ö×é¼þÀïÃæµÄ¿ØÖÆÆ÷£¬Æ½³£µÄ×ö·¨ÊÇÖ±½Ó==#import "¿ØÖÆÆ÷Í·Îļþ"==£¬ÏÖÔÚÔÚ²»Í¬µÄ×é¼þÀïÃæÊÇÎÞ·¨importµÄ£¬ÄǸÃÔõô×öÄØ£¿´ð°¸¾ÍÊÇʹÓÃ==ÏûÏ¢·¢ËÍ»úÖÆ==¡£

˼·£º

ÿ¸öÒµÎñ×é¼þ¿âÀïÃæ»áÓÐÒ»¸ö¿ØÖÆÆ÷µÄÅäÖÃÎļþ£¨Â·ÓÉÅäÖÃÎļþ£©£¬±ê¼Ç×Åÿ¸ö¿ØÖÆÆ÷µÄkey£»

ÔÚAppÿ´ÎÆô¶¯Ê±£¬×é¼þͨѶµÄ¹¤¾ßÀàÀïÃæÐèÒª½âÎö¿ØÖÆÆ÷ÅäÖÃÎļþ£¨Â·ÓÉÅäÖÃÎļþ£©£¬½«Æä¼ÓÔØ½øÄڴ棻

ÔÚÄÚ´æÖвéѯ·ÓÉÅäÖã¬ÕÒµ½¾ßÌåµÄ¿ØÖÆÆ÷²¢¶¯Ì¬Éú³ÉÀ࣬ȻºóʹÓÃ==ÏûÏ¢·¢ËÍ»úÖÆ==½øÐе÷Óú¯Êý¡¢´«²ÎÊý¡¢»Øµ÷£¬¶¼ÄÜ×öµ½¡£

((id (*)(id, SEL, NSDictionary *)) objc_msgSend)((id) cls, @selector(load:), param);
((void(*)(id, SEL,NSDictionary*))objc_msgSend)((id) vc, @selector(callBack:), param);
Or
[vc performSelector:@selector(load:) withObject:param];
[vc performSelector:@selector(callBack:) withObject:param];

ºÃ´¦£º

½â³ýÁË¿ØÖÆÆ÷Ö®¼äµÄÒÀÀµ£»

ʹÓÃiOSµÄÏûÏ¢·¢ËÍ»úÖÆ½øÐд«²ÎÊý¡¢»Øµ÷²ÎÊý¡¢Í¸´«²ÎÊý£»

·ÓɱíÅäÖÃÎļþ£¬ÄÜʵÏÖ½çÃæ¶¯Ì¬ÅäÖᢶ¯Ì¬Éú³É½çÃæ£»

·ÓɱíÅäÖÃÎļþ·Åµ½·þÎñ¶Ë£¬»¹¿ÉÒÔʵÏÖÏßÉÏAppµÄÌø×ªÂß¼­£»

½«¿ØÖÆÆ÷µÄkeyÌṩ¸øH5£¬»¹¿ÉÒÔʵÏÖH5Ìø×ªµ½Native½çÃæ£»

7. ×é¼þ»¯ºóµÄ×ÊÔ´¼ÓÔØ

ÐÂÏîÄ¿ÒÑ¿ªÊ¼¾Í²ÉÓÃ×é¼þ»¯¿ª·¢£¬»¹ÊÇÌØ±ðÈÝÒ׵ģ¬Èç¹ûÊÇÀÏÏîÄ¿ÖØ¹¹³É×é¼þ»¯£¬ÄǾͱȽϱ¯¾çÁË£¬OCÏîÄ¿ÖØ¹¹ºó£¬app°üÀïÃæ»áÓÐÒ»¸ö==Frameworks==Îļþ¼Ð£¬ËùÓеÄ×é¼þ¶¼ÔÚÕâ¸öÎļþ¼ÐÏ£¬²¢ÇÒÒÔ==.framework==£¨±ÈÈ磺WDComponentLogin.framework £©½áβ¡£ÔÚ¹¤³ÌÖÐʹÓõÄ==xib¡¢Í¼Æ¬==£¬Ê¹ÓÃÕý³£µÄ·½Ê½¼ÓÔØ£¬ÊǼÓÔØ²»µ½µÄ£¬Ô­Òò¾ÍÊÇxib¡¢Í¼Æ¬µÄ·¾¶==£¨¹¤³Ì.app/Frameworks/WDComponentLogin.framework / LoginViewController.nib¡¢¹¤³Ì.app/Frameworks/WDComponentLogin.framework /login.png£© ==·¢ÉúÁ˱仯¡£

ÒÔÏÂÊÇÔÚ×é¼þ¿âÖмÓÔØnibÎļþ/ͼƬÎļþµÄËùÓÐÇé¿ö£º

/**
´ÓÖ÷¹¤³ÌmainBundle»ò´ÓËùÓеÄ×é¼þ(×é¼þÃû.framework)ÖмÓÔØÍ¼Æ¬
@param imageName ͼƬÃû³Æ
@return ·µ»Ø²éÕÒµÄͼƬ½á¹û
*/
+ (UIImage *_Nullable)loadImageNamed:(NSString *_Nonnull)
imageName; /**
´ÓÖ¸¶¨µÄ×é¼þÖмÓÔØÍ¼Æ¬£¬Ö÷ÒªÓÃÓÚ´Óµ±Ç°×é¼þ¼ÓÔØÆäËû×é¼þÖеÄͼƬ
@param imageName ͼƬÃû³Æ
@param frameworkName ×é¼þÃû³Æ
@return ·µ»Ø²éÕÒµÄͼƬ½á¹û
*/
+ (UIImage *_Nullable)loadImageNamed:(NSString *_Nonnull)
imageName frameworkName:(NSString *_Nonnull)frameworkName;
/**
´ÓÖ¸¶¨µÄ×é¼þµÄBundleÎļþ¼ÐÖмÓÔØÍ¼Æ¬£¬Ö÷ÒªÓÃÓÚ´Óµ±Ç°×é¼þ
¼ÓÔØÆäËû×é¼þBundleÎļþ¼ÐÖеÄͼƬ
@param imageName ͼƬÃû³Æ
@param bundleName BundleÎļþ¼ÐÃû
@param frameworkName ×é¼þÃû³Æ
@return ·µ»Ø²éÕÒµÄͼƬ½á¹û
*/
+ (UIImage *_Nullable)loadImageNamed:(NSString *_Nonnull)
imageName bundleName:(NSString *_Nonnull)bundleName frameworkName:
(NSString *_Nonnull)frameworkName;
/**
´ÓÖ÷¹¤³ÌmainBundleµÄÖ¸¶¨BundleÎļþ¼ÐÖÐÈ¥¼ÓÔØÍ¼Æ¬
@param imageName ͼƬÃû³Æ
@param bundleName BundleÎļþ¼ÐÃû
@return ·µ»Ø²éÕÒµÄͼƬ½á¹û
*/
+ (UIImage *_Nullable)loadImageNamed:(NSString *_Nonnull)imageName bundleName:(NSString *_Nonnull)bundleName;
/**
´ÓÖ¸¶¨µÄ×é¼þ(×é¼þÃû.framework)ÖмÓÔØÍ¼Æ¬
˵Ã÷£º¼ÓÔØ×é¼þÖеÄͼƬ£¬±ØÐëÖ¸Ã÷ͼƬµÄÈ«ÃûºÍͼƬËùÔÚbundleµÄ°üÃû
@param imageName ͼƬÃû³Æ
@param targetClass µ±Ç°Àà
@return ·µ»Ø²éÕÒµÄͼƬ½á¹û
*/
+ (UIImage *_Nullable)loadImageNamed:(NSString *_Nonnull)imageName targetClass:(Class _Nonnull)targetClass;
/**
´ÓÖ¸¶¨µÄ×é¼þ(×é¼þÃû.framework)ÖеÄBundleÎļþ¼ÐÖмÓÔØÍ¼Æ¬
˵Ã÷£º¼ÓÔØ×é¼þÖеÄͼƬ£¬±ØÐëÖ¸Ã÷ͼƬµÄÈ«ÃûºÍͼƬËùÔÚbundleµÄ°üÃû
@param imageName ͼƬÃû³Æ
@param bundleName BundleÎļþ¼ÐÃû
@param targetClass µ±Ç°Àà
@return ·µ»Ø²éÕÒµÄͼƬ½á¹û
*/
+ (UIImage *_Nullable)loadImageNamed:(NSString *_Nonnull)
imageName bundleName:(NSString *_Nonnull)bundleName targetClass:
(Class _Nonnull)targetClass;
/**
¼ÓÔØ¹¤³ÌÖеÄnibÎļþ
eg£º[_tableview registerNib:[WDLoadResourcesUtil loadNibClass:[WDRepaymentheaderView class]] forHeaderFooterViewReuseIdentifier:kWDRepaymentheaderView]
@param class nibÎļþÃû
@return ·µ»ØËùÐèÒªµÄnib¶ÔÏó
*/
+ (UINib *_Nullable)loadNibClass:(NSObject *_Nonnull)targetClass;

¿ØÖÆÆ÷¼ÓÔØ·½Ê½£º

@implementation WDBaseViewController
- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:
(NSBundle *)nibBundleOrNil {
NSString *classString = [[NSStringFromClass(self.class) componentsSeparatedByString:@"."] lastObject];
if ([[NSBundle bundleForClass:[self class]] pathForResource:
classString ofType:@"nib"] != nil) {
//ÓÐxib
return [super initWithNibName:classString bundle:
[NSBundle bundleForClass:[self class]]];
}else if ([[NSBundle mainBundle] pathForResource:classString
ofType:@"nib"] == nil) {
//ûÓÐxib
return [super initWithNibName:nil bundle:nibBundleOrNil];
} else {
return [super initWithNibName:(nibNameOrNil == nil ? classString
: nibNameOrNil) bundle:nibBundleOrNil];
}
}
@end

UIViewÊÓͼ¼ÓÔØ·½Ê½£º

+ (id)loadFromNIB {
if ([[NSFileManager defaultManager] fileExistsAtPath:[NSBundle bundleForClass:[self class]].bundlePath]) {
return [[[NSBundle bundleForClass:[self class]] loadNibNamed
:[self description]
owner:self
options:nil] lastObject];
}else{
return [[[NSBundle mainBundle] loadNibNamed:[self description]
owner:self options:nil] lastObject];
}

}
+ (id)loadFromNIB:(NSInteger)index {
if ([[NSFileManager defaultManager] fileExistsAtPath:[NSBundle bundleForClass:[self class]].bundlePath]) {
return [[NSBundle bundleForClass:[self class]] loadNibNamed:
[self description]
owner:self
options:nil][index];
}else{
return [[NSBundle mainBundle] loadNibNamed:[self description]
owner:self options:nil][index];
}

}

Swift°æ±¾

// MARK: - ͨ¹ýnib¼ÓÔØÊÓͼ
@objc public static func loadFromNIB() -> UIView! {
return (Bundle(for: self.classForCoder()).loadNibNamed
(self.description().components(separatedBy:
".")[1], owner: self, options: nil)?.first as? UIView)!
}

8. OC¹¤³Ìµ×²ã»»swift´úÂë

ĿǰÕýÔÚ×öOCµ×²ãµÄͳһ£¬»»³ÉswiftдµÄ´úÂë¡£

1¡¢¿ØÖÆÆ÷Base¡¢Web¿ØÖÆÆ÷BaseʹÓÃOC´úÂ룬ÒòΪOC¿ØÖÆÆ÷²»Äܼ̳ÐSwift£¬¶øSwift¿ØÖÆÆ÷¿ÉÒԼ̳ÐOCдµÄ¿ØÖÆÆ÷¡£

2¡¢µ¼º½À¸¡¢¹¤¾ßÀ¸¡¢Â·ÓÉ¡¢»ù´¡×é¼þ¡¢¹¦ÄÜ×é¼þ¡¢»ìºÏ¿ª·¢²å¼þ¶¼ÊÇÓÃSwiftÓïÑÔ¡£

3¡¢SwiftÒÆ¶¯×é¼þ´ó²¿·ÖÍê³É£¬OC¹¤³Ì¡¢Swift¹¤³Ì¶¼Í³Ò»Ê¹Óÿª·¢µÄÒÆ¶¯×é¼þ¿â¡£

9. ×ܽá

¾­¹ý°ëÄêµÄŬÁ¦Öع¹£¬ÖÕÓÚ½«¹¤³Ì²ð·Ö³É×é¼þ»¯¿ª·¢ÁË£¬Ò²´ÓÖÐѧµ½Á˺ܶ࣬ϣÍû×Ô¼ºÄÜÔÙ½ÓÔÙÀ÷ºÍͬÊÂÒ»Æð½ø²½¡£

ºÃÁË£¬ÒÔÉϾÍÊÇÕâÆªÎÄÕµÄÈ«²¿ÄÚÈÝÁË£¬Ï£Íû±¾ÎĵÄÄÚÈݶԴó¼ÒµÄѧϰ»òÕß¹¤×÷¾ßÓÐÒ»¶¨µÄ²Î¿¼Ñ§Ï°¼ÛÖµ£¬Èç¹ûÓÐÒÉÎÊ´ó¼Ò¿ÉÒÔÁôÑÔ½»Á÷£¬Ð»Ð»´ó¼Ò¶Ô½Å±¾Ö®¼ÒµÄÖ§³Ö¡£

 

 
   
1691 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì