我正在使用 Apple 的 ARC。我有两个类:一个有一个 NSMutableSet,一个我想放在那个 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) 等。
这是否意味着 ARC 正在发布 SmallClass?我该如何解决它(我当然不能保留)?在 myclass 实例上调用 copy 会导致错误,因为我没有为 myClass 实现 copy (以 ARC 之前的方式,我只会保留它)。
容器类代码:
@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