Denna delen av 99 uppdateras inte längre utan har arkiverats inför framtiden som ett museum.
Här kan du läsa mer om varför.
Mac-nyheter hittar du på Macradion.com och forumet hittar du via Applebubblan.

Kategorier i ett fungerar inte

Tråden skapades och har fått 4 svar. Det senaste inlägget skrevs .
1

Hej,

Jag har ett problem med ett statiskt bibliotek som jag bygger i ett Xcode 3-projekt. Projektet har två iPhone-targets. Ett som bygger det statiska biblioteket och ett som bygger en app som länkar till libbet.

I libbet har jag en kategori på NSDictionary, i den har jag en klassmetod som returnerar en ny instans av NSDictionary.

När jag anropar denna klassmetod så får jag "unrecognized selector sent to instance". Det händer även andra klassmetoder som är deklarerade på kategorier. Dock fungerar vanliga klasser.

Det spelar ingen roll om extensionmetoden anropas från kod inuti libbet eller från appen som använder den.

När jag kompilerar får jag inga varningar eller fel om att metoden skulle saknas.

/Fredrik

  • Medlem
  • Stockholm
  • 2010-08-29 14:24

Tror aldrig att jag sett en kategori med klassmetoder i. Vet inte om det borde fungera, men som sagt är nästan hundra på att jag aldrig sett klassmetodert i kategorier.

Vänligen, Ylan

Ursprungligen av Ylan:

Tror aldrig att jag sett en kategori med klassmetoder i. Vet inte om det borde fungera, men som sagt är nästan hundra på att jag aldrig sett klassmetodert i kategorier.

Vänligen, Ylan

Jodå, det funkar med bägge typerna; både klass- och instansmetoder.

Exempel.

@interface NSObject (MyCategory)
- (NSInteger)value1;
+ (NSInteger)value2;
@end

@implementation NSObject (MyCategory)

- (NSInteger)value1 {
    return self.value + 1;
}

+ (NSInteger)value2 {
    return 2;
}

@end

Det beror på att klassen inte implementerar den metoden.

Har du lite kod att visa?

Ursprungligen av fixarfrasse:

I libbet har jag en kategori på NSDictionary, i den har jag en klassmetod som returnerar en ny instans av NSDictionary.

Typ såhär?

@interface NSDictionary (MyCategory)
+ (NSDictionary *)newDictionary;
@end

@implementation NSDictionary (MyCategory)
+ (NSDictionary *)newDictionary {
    return [[NSDictionary alloc] init];
}
@end

Kanske har att göra med att du lägger kategorin i ett eget bibliotek?

1
Bevaka tråden