Apple の ARC を使用しています。2 つのクラスがあります。1 つは NSMutableSet を持ち、もう 1 つはその NSMutableSet 内に配置します。
したがって、次のことを行うと:
ContainerClass* contClass = [[ContainerClass alloc] init];
for(int i = 0;i<10;i++)
{
SmallClass* myClass = [[SmallClass alloc] init];
[myClass setinfo:i];
[contClass.mySet addObject:myclass];
}
for(SmallClass* cls in contClass.mySet){
NSLog(@"%@", cls);
}
結果は次のとおりです: (null) (null) (null) (null) など。
SmallClass が ARC によってリリースされているということですか? どうすれば解決できますか(もちろん保持はできません)?myClass インスタンスで copy を呼び出すと、myClass の copy を実装していないため、エラーが発生します (ARC 以前の方法で保持するだけです)。
ContainerClassコード:
@interface ContainerClass : NSObject {
NSString* _icon;
NSMutableSet* _mySet;
}
@property (nonatomic, strong) NSString* icon;
@property (nonatomic, strong) NSMutableSet* mySet;
@end
そして実装:
@implementation ContainerClass
-(id) init
{
_myset = [[NSMutableSet alloc] init];
return [super init];
}
@synthesize mySet = _mySet;
@end