5
は保持特性を持つクラスの次の定義を考える: このプロパティに「保持」が必要なのはなぜですか?
@interface FeedEntry : NSObject<NSCoding>
{
NSURL* url;
NSData* source;
}
@property (retain) NSURL* url;
@property (retain) NSData* source;
@end
@implementation FeedEntry
@synthesize url;
@synthesize source;
-(void)encodeWithCoder:(NSCoder*)coder
{
[coder encodeObject:url forKey:@"url"];
[coder encodeObject:source forKey:@"source"];
}
はなぜ「保持」initWithCoderメソッドでurlプロパティ必要がありません:
-(id)initWithCoder:(NSCoder*)coder
{
url = [[coder decodeObjectForKey:@"url"] retain];
source = [coder decodeObjectForKey:@"source"];
NSLog(@"got url=%@\n", url);
return self;
}
具体的には、理由を合成していません」 get url "メソッドはオブジェクトを保持しますか? (私はソースプロパティを推測しているので、保持する必要もあります)。
実際に!これは私をかなり頻繁に噛む気がします。お返事をありがとうございます。 – Justicle
私の喜び。最初は慣れていました。一度それをやってしまえば、それは第二の性質になります:) –
私はプライベートインスタンス変数に_プレフィックスを使用するのが好きです。それはインスタンス変数を使用しているときにわかりやすくなります他に何か? –