コードをModernObjective-Cスタイルに変換しようとしています。ここでの読み方http://www.techotopia.com/index.php/The_Basics_of_Modern_Objective-C ":"ただし、Modern Objective-Cの場合、合成はデフォルトで行われるため、@synthesize宣言を使用する必要はありません。 。デフォルトのプロパティ合成を使用する場合、インスタンス変数のプロパティには、コード内からアンダースコアを前に付けたプロパティ名を使用してアクセスできます。」
しかし、私は持っています:
Relationship.h
@interface Relationship : NSObject <NSCoding>
//...
@property(nonatomic, weak) Person* first;
//...
@end`
OtherRelationship.h
#import "Relationship.h"
@interface OtherRelationship : Relationship
@end
OtherRelationship.m
#import "OtherRelationship.h"
@implementation OtherRelationship
@synthesize first = _first;
- (void)foo
{
NSLog(@"%@", _first);
}
そしてそれは働いています。しかし、私が削除すると
@synthesize first = _first;
「宣言されていない識別子'_first'の使用」エラーが発生します。継承された変数は自動合成で機能しませんか、それとも他の場所で問題を探す必要がありますか?