22 EKİM 2010, Cuma
Objective-C Kategorisi tanınmayan seçici Neden
Projemi başka bir sınıftan çağırmak istiyorum Uİİmage kategori bir işlevi vardır. Ben düzgün resim kategori başlık dosyası alma ve proje herhangi bir uyarı ile derlemek için.
Sorun uiimage kategori fonksiyonu çağırdığımda bir NSİnvalidArgumentException ile tanınmayan seçici bir hata gördüm. Neden eğer her şey düzgün bağladım yoksa hayal mi görüyorum?
#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
dosya aramaları:
backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamedDR:@"Share Popup Background"]];
özel durum oluşturuldu:
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
CEVAP
22 EKİM 2010, Cuma
Birkaç olasılık vardır:
- Hedefin içine
UIImage TTShare.m
bağlantı değil. Bu kadar başlık varken, uygulama derleme değilsin. - Eğer bu statik bir kütüphane bir parçası ise,
-all_load
eklemek gerekirDiğer Linker Flagsuygulama için ayar kitaplığı karşı bağlantı kurmak.
Bunu Paylaş:
performSelector onun seçici bilinmiyor...
Neden Objective-C delegeler genellikle...
İçinde Objective-C neden = [super init...
Neden Objective C dosyalarını kullanın...
Neden'Objective-C t özel yöntemle...