±à¼ÍƼö: |
±¾ÎĽéÉÜÁ˹ØÓÚ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
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. ×ܽá
¾¹ý°ëÄêµÄŬÁ¦Öع¹£¬ÖÕÓÚ½«¹¤³Ì²ð·Ö³É×é¼þ»¯¿ª·¢ÁË£¬Ò²´ÓÖÐѧµ½Á˺ܶ࣬ϣÍû×Ô¼ºÄÜÔÙ½ÓÔÙÀ÷ºÍͬÊÂÒ»Æð½ø²½¡£
ºÃÁË£¬ÒÔÉϾÍÊÇÕâÆªÎÄÕµÄÈ«²¿ÄÚÈÝÁË£¬Ï£Íû±¾ÎĵÄÄÚÈݶԴó¼ÒµÄѧϰ»òÕß¹¤×÷¾ßÓÐÒ»¶¨µÄ²Î¿¼Ñ§Ï°¼ÛÖµ£¬Èç¹ûÓÐÒÉÎÊ´ó¼Ò¿ÉÒÔÁôÑÔ½»Á÷£¬Ð»Ð»´ó¼Ò¶Ô½Å±¾Ö®¼ÒµÄÖ§³Ö¡£
|