2012-04-28 2 views
6

У меня есть интерфейс:initWithCoder: не видно в NSObject?

#import <Foundation/Foundation.h> 

@interface Picture : NSObject; 

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

@end 

и реализация:

#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 

Я получаю сообщение об ошибке: ARC вопрос - Нет видимых @interface для 'NSObject' объявляет селектор 'initWithCoder:'

Есть ли что-то другое в NSCoding при использовании ARC? Спасибо

ответ

13

Между ARC и ручным подсчетом ссылок ничего нет. NSObject не соответствует NSCoding и поэтому не дает -initWithCoder: или -encodeWithCoder:. Просто не переходите к реализациям суперкласса этих методов.

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

 Смежные вопросы

  • Нет связанных вопросов^_^