Swift - 无法识别的选择器发送到 SDWebImage 方法上的实例
Swift - unrecognized selector sent to instance on SDWebImage methods on
我在我的项目中添加了完整的 SDWebImage 文件夹。还添加了桥接头。我的应用程序在安装过程中没有产生任何问题,但是当我尝试访问 SDWebImage 方法时,它给出了以下异常 "unrecognized selector sent to instance",错误代码:
d_setImageWithURL:placeholderImage:options:completed:]: unrecognized selector sent to instance 0x7f80e7d2e490
2018-03-04 18:53:41.673344+0600 Messenger[24721:203878] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIImageView sd_setImageWithURL:placeholderImage:options:completed:]: unrecognized selector sent to instance 0x7f80e7d2e490'
*** First throw call stack:
(
0 CoreFoundation 0x000000010f7d11cb __exceptionPreprocess + 171
1 libobjc.A.dylib 0x000000011028af41 objc_exception_throw + 48
2 CoreFoundation 0x000000010f851914 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
3 UIKit 0x0000000111aa30bd -[UIResponder doesNotRecognizeSelector:] + 295
4 CoreFoundation 0x000000010f754178 ___forwarding___ + 1432
5 CoreFoundation 0x000000010f753b58 _CF_forwarding_prep_0 + 120
6 Messenger 0x000000010e269a26 _T09Messenger32RMStickerMarketHomeTableViewCellC22showImageFromURLStringySS9urlString_So07UIImageF0C2inSo019UIActivityIndicatorF0C4withtF + 582
7 Messenger 0x000000010e26d4ee _T09Messenger32RMStickerMarketHomeTableViewCellC010collectionF0So012UICollectionfG0CSo0iF0C_10Foundation9IndexPathV13cellForItemAttF + 7918
8 Messenger 0x000000010e26d84c _T09Messenger32RMStickerMarketHomeTableViewCellC010collectionF0So012UICollectionfG0CSo0iF0C_10Foundation9IndexPathV13cellForItemAttFTo + 92
9 UIKit 0x000000011232f426 -[UICollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes:isFocused:notify:] + 290
10 UIKit 0x000000011232f2fe -[UICollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes:] + 35
11 UIKit 0x000000011233481b -[UICollectionView _updateVisibleCellsNow:] + 4775
12 UIKit 0x000000011233a710 -[UICollectionView layoutSubviews] + 364
13 UIKit 0x0000000111949551 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1331
14 QuartzCore 0x00000001114774ba -[CALayer layoutSublayers] + 153
15 QuartzCore 0x000000011147b5a9 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 401
16 UIKit 0x0000000111933e5f -[UIView(Hierarchy) layoutBelowIfNeeded] + 662
17 UIKit 0x000000011193b01c +[UIView(Animation) performWithoutAnimation:] + 90
18 UIKit 0x00000001119d4163 -[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] + 1354
19 UIKit 0x00000001119d44ab -[UITableView _createPreparedCellForGlobalRow:willDisplay:] + 74
20 UIKit 0x000000011199a870 -[UITableView _updateVisibleCellsNow:isRecursive:] + 2892
21 UIKit 0x00000001119bbde9 -[UITableView layoutSubviews] + 176
22 UIKit 0x0000000111949551 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1331
23 QuartzCore 0x00000001114774ba -[CALayer layoutSublayers] + 153
24 QuartzCore 0x000000011147b5a9 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 401
25 QuartzCore 0x00000001114041cd _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 365
26 QuartzCore 0x000000011142fae4 _ZN2CA11Transaction6commitEv + 500
27 QuartzCore 0x0000000111430830 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 76
28 CoreFoundation 0x000000010f773db7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
29 CoreFoundation 0x000000010f773d0e __CFRunLoopDoObservers + 430
30 CoreFoundation 0x000000010f758324 __CFRunLoopRun + 1572
31 CoreFoundation 0x000000010f757a89 CFRunLoopRunSpecific + 409
32 GraphicsServices 0x0000000118a4d9c6 GSEventRunModal + 62
33 UIKit 0x000000011187ad30 UIApplicationMain + 159
34 Messenger 0x000000010e2339a7 main + 55
35 libdyld.dylib 0x00000001150edd81 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
这是我的桥接头文件代码:
#ifndef Messenger_Bridging_Header_h
#define Messenger_Bridging_Header_h
#import <authsdk/AuthSDKManager.h>
#import <IMSDK/IMManager.h>
#import "OpenUDID.h"
#import "UIImageView+WebCache.h"
#import "OrderedDictionary.h"
#import "UINavigationController+SGProgress.h"
#import "KASlideShow.h"
#endif /* Messenger_Bridging_Header_h */
这是我在项目中使用 SDWebImage 方法的代码:
func showImageFromURLString(urlString: String, in imageView: UIImageView, with activityIndicatorView: UIActivityIndicatorView) -> Void {
let imageURL = URL(string: urlString)
if let url = imageURL{
activityIndicatorView.isHidden = false
activityIndicatorView.startAnimating()
// imageView.setImageWith(url, placeholderImage: nil, options: .cacheMemoryOnly){
// (image, error, cacheType) in
// activityIndicatorView.stopAnimating()
// activityIndicatorView.isHidden = true
// }
imageView.sd_setImage(with: url, placeholderImage: nil, options: .cacheMemoryOnly) {
(image, error, cacheType, url) in
activityIndicatorView.stopAnimating()
activityIndicatorView.isHidden = true
}
}
}
原因:
Added from "Build Phases -> Link Binary with Libraries" which added
the framework and made a copy of that framework at the root folder of
the projects.
解决方案:
Remove library from Link Binary with Libraries, also remove from
Project Navigator, Then copy the framework files under "AppName ->
AppName -> Frameworks", then add on project navigator, then add on
Link Binary with Libraries
最后在项目桥接头上添加这一行,如下所示,问题应该解决了
#ifndef Messenger_Bridging_Header_h
#define Messenger_Bridging_Header_h
#import <SDWebImage/UIImageView+WebCache.h>
#endif /* Messenger_Bridging_Header_h */
我在我的项目中添加了完整的 SDWebImage 文件夹。还添加了桥接头。我的应用程序在安装过程中没有产生任何问题,但是当我尝试访问 SDWebImage 方法时,它给出了以下异常 "unrecognized selector sent to instance",错误代码:
d_setImageWithURL:placeholderImage:options:completed:]: unrecognized selector sent to instance 0x7f80e7d2e490
2018-03-04 18:53:41.673344+0600 Messenger[24721:203878] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIImageView sd_setImageWithURL:placeholderImage:options:completed:]: unrecognized selector sent to instance 0x7f80e7d2e490'
*** First throw call stack:
(
0 CoreFoundation 0x000000010f7d11cb __exceptionPreprocess + 171
1 libobjc.A.dylib 0x000000011028af41 objc_exception_throw + 48
2 CoreFoundation 0x000000010f851914 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
3 UIKit 0x0000000111aa30bd -[UIResponder doesNotRecognizeSelector:] + 295
4 CoreFoundation 0x000000010f754178 ___forwarding___ + 1432
5 CoreFoundation 0x000000010f753b58 _CF_forwarding_prep_0 + 120
6 Messenger 0x000000010e269a26 _T09Messenger32RMStickerMarketHomeTableViewCellC22showImageFromURLStringySS9urlString_So07UIImageF0C2inSo019UIActivityIndicatorF0C4withtF + 582
7 Messenger 0x000000010e26d4ee _T09Messenger32RMStickerMarketHomeTableViewCellC010collectionF0So012UICollectionfG0CSo0iF0C_10Foundation9IndexPathV13cellForItemAttF + 7918
8 Messenger 0x000000010e26d84c _T09Messenger32RMStickerMarketHomeTableViewCellC010collectionF0So012UICollectionfG0CSo0iF0C_10Foundation9IndexPathV13cellForItemAttFTo + 92
9 UIKit 0x000000011232f426 -[UICollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes:isFocused:notify:] + 290
10 UIKit 0x000000011232f2fe -[UICollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes:] + 35
11 UIKit 0x000000011233481b -[UICollectionView _updateVisibleCellsNow:] + 4775
12 UIKit 0x000000011233a710 -[UICollectionView layoutSubviews] + 364
13 UIKit 0x0000000111949551 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1331
14 QuartzCore 0x00000001114774ba -[CALayer layoutSublayers] + 153
15 QuartzCore 0x000000011147b5a9 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 401
16 UIKit 0x0000000111933e5f -[UIView(Hierarchy) layoutBelowIfNeeded] + 662
17 UIKit 0x000000011193b01c +[UIView(Animation) performWithoutAnimation:] + 90
18 UIKit 0x00000001119d4163 -[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] + 1354
19 UIKit 0x00000001119d44ab -[UITableView _createPreparedCellForGlobalRow:willDisplay:] + 74
20 UIKit 0x000000011199a870 -[UITableView _updateVisibleCellsNow:isRecursive:] + 2892
21 UIKit 0x00000001119bbde9 -[UITableView layoutSubviews] + 176
22 UIKit 0x0000000111949551 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1331
23 QuartzCore 0x00000001114774ba -[CALayer layoutSublayers] + 153
24 QuartzCore 0x000000011147b5a9 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 401
25 QuartzCore 0x00000001114041cd _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 365
26 QuartzCore 0x000000011142fae4 _ZN2CA11Transaction6commitEv + 500
27 QuartzCore 0x0000000111430830 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 76
28 CoreFoundation 0x000000010f773db7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
29 CoreFoundation 0x000000010f773d0e __CFRunLoopDoObservers + 430
30 CoreFoundation 0x000000010f758324 __CFRunLoopRun + 1572
31 CoreFoundation 0x000000010f757a89 CFRunLoopRunSpecific + 409
32 GraphicsServices 0x0000000118a4d9c6 GSEventRunModal + 62
33 UIKit 0x000000011187ad30 UIApplicationMain + 159
34 Messenger 0x000000010e2339a7 main + 55
35 libdyld.dylib 0x00000001150edd81 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
这是我的桥接头文件代码:
#ifndef Messenger_Bridging_Header_h
#define Messenger_Bridging_Header_h
#import <authsdk/AuthSDKManager.h>
#import <IMSDK/IMManager.h>
#import "OpenUDID.h"
#import "UIImageView+WebCache.h"
#import "OrderedDictionary.h"
#import "UINavigationController+SGProgress.h"
#import "KASlideShow.h"
#endif /* Messenger_Bridging_Header_h */
这是我在项目中使用 SDWebImage 方法的代码:
func showImageFromURLString(urlString: String, in imageView: UIImageView, with activityIndicatorView: UIActivityIndicatorView) -> Void {
let imageURL = URL(string: urlString)
if let url = imageURL{
activityIndicatorView.isHidden = false
activityIndicatorView.startAnimating()
// imageView.setImageWith(url, placeholderImage: nil, options: .cacheMemoryOnly){
// (image, error, cacheType) in
// activityIndicatorView.stopAnimating()
// activityIndicatorView.isHidden = true
// }
imageView.sd_setImage(with: url, placeholderImage: nil, options: .cacheMemoryOnly) {
(image, error, cacheType, url) in
activityIndicatorView.stopAnimating()
activityIndicatorView.isHidden = true
}
}
}
原因:
Added from "Build Phases -> Link Binary with Libraries" which added the framework and made a copy of that framework at the root folder of the projects.
解决方案:
Remove library from Link Binary with Libraries, also remove from Project Navigator, Then copy the framework files under "AppName -> AppName -> Frameworks", then add on project navigator, then add on Link Binary with Libraries
最后在项目桥接头上添加这一行,如下所示,问题应该解决了
#ifndef Messenger_Bridging_Header_h
#define Messenger_Bridging_Header_h
#import <SDWebImage/UIImageView+WebCache.h>
#endif /* Messenger_Bridging_Header_h */