2012-01-05 8 views
1

私はAppleのARCを使用しています。私はクラスを持っている: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)の(ヌル)など(ヌル)

それは小さい種類がARCによって解放されていることを意味してい?どうすれば解決できますか(私はもちろん留保できません)? myClassのコピーを実装していないため、myclassインスタンスのコピーを呼び出すとエラーが発生します(以前の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 
+0

ContainerClassのコードを教えてください。 –

+0

'@interface ContainerClass:NSObject { NSString * _icon; NSMutableSet * _mySet; } @property(nonatomic、strong)NSString *アイコン; @property(非原子的、強い)NSMutableSet * mySet; end' @と.mファイル: '@implementation PoiSet - (ID)は、initの {_myset = [[NSMutableSetのALLOC] INIT]。 [スーパーinit]を返します。 } @synthesize mySet = _mySet; @end' – amir

+0

申し訳ありません。このコメントシステムは初めてです。ここをクリックしてください。 http://codetidy.com/1725/ – amir

答えて

1

私はあなたのContainerClassのinitメソッドが間違っていると思います。以下を試してください:

-(id)init 
{ 
    if (self = [super init]) 
    { 
     _myset = [[NSMutableSet alloc] init]; 
    } 
    return self; 
} 

希望します。

+0

私もself.mySet = [[NSMutableSet alloc] init]を実行しました。 – amir

関連する問題