gpt4 book ai didi

iphone - Objective-C 类别导致无法识别的选择器

转载 作者:IT老高 更新时间:2023-10-28 11:26:33 25 4
gpt4 key购买 nike

我的项目有一个我想从另一个类调用的 UIImage 类别函数。我正确地导入了图像类别的头文件,并且我可以编译项目而没有任何警告。

问题是,当我调用 UIImage 类别函数时,我看到了一个无法识别的选择器错误,并带有 NSInvalidArgumentException。如果我已正确链接所有内容,为什么会看到此内容?

#import <UIKit/UIKit.h>

@interface UIImage (DRShare)

+ (UIImage*) imageNamed:(NSString*)name;

@end


@implementation UIImage (DRShare)

+ (UIImage*) imageNamedDR:(NSString*)name{

CGFloat s = 1.0f;
if([[UIScreen mainScreen] respondsToSelector:@selector(scale)]){
s = [[UIScreen mainScreen] scale];
}

NSString *path = [NSString stringWithFormat:@"%@%@%@.png",kImagesPath,name,s > 1 ? @"@2x":@""];
return [UIImage imageWithContentsOfFile:DRBUNDLE(path)];
}

@end

调用它的文件:

        backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamedDR:@"Share Popup Background"]];

引发异常:

2010-10-22 11:51:02.880 Stuff[11432:207] +[UIImage imageNamedDR:]: unrecognized selector sent to class 0x1f8e938
2010-10-22 11:51:02.883 Stuff[11432:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[UIImage imageNamedDR:]: unrecognized selector sent to class 0x1f8e938'
*** Call stack at first throw:
(
0 CoreFoundation 0x02e65b99 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x02fb540e objc_exception_throw + 47
2 CoreFoundation 0x02e6776b +[NSObject(NSObject) doesNotRecognizeSelector:] + 187
3 CoreFoundation 0x02dd72b6 ___forwarding___ + 966
4 CoreFoundation 0x02dd6e72 _CF_forwarding_prep_0 + 50
5 TapTapShare 0x0001291c -[DRShareViewController backgroundView] + 127
6 TapTapShare 0x00012343 -[DRShareViewController loadView] + 639
7 UIKit 0x0044f54f -[UIViewController view] + 56
8 UIKit 0x0044d9f4 -[UIViewController contentScrollView] + 42
9 UIKit 0x0045d7e2 -[UINavigationController _computeAndApplyScrollContentInsetDeltaForViewController:] + 48
10 UIKit 0x0045bea3 -[UINavigationController _layoutViewController:] + 43
11 UIKit 0x0045d12d -[UINavigationController _startTransition:fromViewController:toViewController:] + 524
12 UIKit 0x00457ccd -[UINavigationController _startDeferredTransitionIfNeeded] + 266
13 UIKit 0x00574b55 -[UILayoutContainerView layoutSubviews] + 226
14 QuartzCore 0x02616481 -[CALayer layoutSublayers] + 177
15 QuartzCore 0x026161b1 CALayerLayoutIfNeeded + 220
16 QuartzCore 0x026160bd -[CALayer layoutIfNeeded] + 111

最佳答案

几种可能性:

  1. 您没有将 UIImage+TTShare.m 链接到您的目标。因此,当您拥有 header 时,您并没有编译实现。
  2. 如果这是静态库的一部分,您需要将 -all_load 添加到 Other Linker Flags build设置,以便应用链接到该库。

关于iphone - Objective-C 类别导致无法识别的选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3998483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com