これはかなり簡単です。指定されたクラスFoo
について:
#import <Foundation/Foundation.h>
@interface Foo : NSObject <NSCoding> {
NSArray* bar_;
NSUInteger baz_;
}
@property (nonatomic, retain) NSArray *bar;
@property (nonatomic, assign) NSUInteger baz;
@end
あなたはNSCoding
プロトコルに準拠するようにしなければならないのは、initWithCoder:
とdecodeWithCoder
メッセージ実装することです:カスタムクラスのためのencodeWithCoder:
とinitWithCoder:
を実装した後
#import "Foo.h"
@implementation Foo
@synthesize bar = bar_;
@synthesize baz = baz_;
#pragma mark - NSCoding
- (void)encodeWithCoder:(NSCoder *)encoder {
[encoder encodeObject:self.bar forKey:@"bar"];
[encoder encodeInteger:self.baz forKey:@"baz"];
}
- (id)initWithCoder:(NSCoder *)decoder {
if ((self = [super init])) {
self.bar = [decoder decodeObjectForKey:@"bar"];
self.baz = [decoder decodeIntegerForKey:@"baz"];
}
return self;
}
- (void) dealloc {
[bar_ release];
[super dealloc];
}
@end
どうもありがとう..:) – Shri
メモリリークが発生しました - (id)initWithCoder:(NSCoder *)各行のデコーダ。考えられる理由を知ることができますか? (私のiVar1とivar2は文字列です) – Shri
あなたはdeallocメソッドでそれらをリリースしましたか? –