objective-c - NSMutableArray 超出范围问题

标签 objective-c c nsmutablearray

我是 Objective-C 的新手。我想使用 NSMutableArray 来存储一些我稍后会访问的对象。

我有界面:

@interface ControlWheel : RotatableObject <LeverSubject>
{
 NSMutableArray *subjectArray_;
}
-(id) initWithCWDef: (ControlWheelDef*) def;
-(void) addSubject: (id) subject;
@end

实现如下:

-(id) initWithCWDef:(ControlWheelDef *)def
{
    ...
    self = [super initWithDef:&rDef];
    if (self)
    {
        subjectArray_ = [NSMutableArray arrayWithCapacity:1];
    }
    return self;
}

-(void) addSubject:(id)subject
{
    [subjectArray_ addObject:subject];
}

-(void) angleChangeCallback
{
    unsigned int count = [subjectArray_ count];
    for (unsigned int i = 0; i < count; i++)
    {
        [[subjectArray_ objectAtIndex:i] onAngleChanged:angle_];
    }
}

问题出在 angleChangeCallback 函数中。 subjectArray_ 超出范围。 我做错了什么?

最佳答案

arrayWithCapacity: 返回一个自动释放的数组。你想要 [[NSMutableArray alloc] init];

NSMutableArray 根据需要增长,所以 arrayWithCapacity: 在大多数情况下并不是特别有用,除非你要用已知的大量对象。

哦,它并没有超出范围;它已被自动释放池收集。

关于objective-c - NSMutableArray 超出范围问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4051748/

相关文章:

ios - 解码响应数据以转换特殊符号

ios - Azure AD B2C 获取 oauthConnection 错误 : Bad Request

C : Redirect child process output to other child process input and stdout

复制二进制文件的内容

c++ - 如何创建 C/C++ 库并将其放入 iOS 版 Xcode 中?

objective-c - 对于强集合实例,赋值给nil等于释放赋值给nil吗?

objective-c - 如何查看字符串是否包含子字符串(objective-c)

iOS - 单击按钮隐藏状态栏

ios - 使用 NSString 变量的名称创建可变数组

iphone - 我如何从 NSMutableArray 中随机抽取并且不使用相同的数字两次?