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 */