サブクラスからgetterとsetterを参照するときに、プロパティで問題が発生しました。
基本クラスには、カスタムセッターを持つlistItemsというプロパティがあります。
@interface BaseList{
NSArray *_listItems;
}
@property (nonatomic, retain) NSArray *listItems;
@end
@implementation BaseList
@synthesize listItems = _listItems;
-(void)setListItems:(NSArray *)listItems
{
[_listItems release];
_listItems = [listItems retain];
//... some logic
}
@end
サブクラスには、listItemsのより具体的な名前(アドレスなど)を持つプロパティがあります。
@interface AddressList
@property (nonatomic, retain, getter = listItems, setter = setListItems:) NSArray *addresses;
@end
アドレスプロパティは、スーパーのlistItemsプロパティのゲッターとセッターを使用する必要があるため、AddressListの実装では合成されません。ただし、設定後:
self.addresses = [NSArray array];
プロパティはまだnilです。面白いことに、これは以前のバージョンのXcodeでうまく機能したと思います。私は現在Xcode4.4(4.4.1)を使用していますが、それが単に間違っているのか、それともこのコンテキストでプロパティ関連のものが変更されているのかわかりません。誰かがそれを正しく行う方法を教えてくれたらとてもありがたいです。