2012-04-28 11 views
6

Mam interfejs:initWithCoder: niewidoczny w NSObject?

#import <Foundation/Foundation.h> 

@interface Picture : NSObject; 

@property (readonly) NSString *filepath; 
- (UIImage *)image; 

@end 

i realizacja:

#import "Picture.h" 

#define kFilepath @"filepath" 

@interface Picture() <NSCoding> { 
    NSString *filepath; 
} 

@end 


@implementation Picture 
@synthesize filepath; 

- (id)initWithCoder:(NSCoder *)aDecoder { 
    self = [super initWithCoder:aDecoder]; 
    return self; 

} 

- (void)encodeWithCoder:(NSCoder *)aCoder { 
    [aCoder encodeObject:filepath forKey:kFilepath]; 
} 

- (UIImage *)image { 
    return [UIImage imageWithContentsOfFile:filepath]; 
} 

@end 

otrzymuję błąd: ARC problem - Brak widocznych @interface dla 'NSObject' deklaruje selektor 'initWithCoder:'

Czy jest coś innego na temat NSCoding podczas używania ARC? Dzięki

Odpowiedz

13

Nie ma różnicy między ARC i ręcznym liczeniem referencji. NSObject nie jest zgodny z NSCoding i dlatego nie dostarcza -initWithCoder: ani -encodeWithCoder:. Po prostu nie odwołuj się do implementacji tych klas w superklasach.

- (id)initWithCoder: (NSCoder *)aCoder { 
    self = [super init]; 
    if (self) { 
     [aCoder decodeObject: filepath forKey: kFilepath]; 
    } 
    return self; 
} 
Powiązane problemy