我正在使用OpprotiveC。我有A类A类,该类别为NSMutablearray指针创建了名为“ List”的指针。但是,在A类中,我永远不会为其指向它。取而代之的是,我在B类中调用类方法,以从SQLite数据库中获取一些数据,并在此处填充NSMutableArray对象。我希望能够在A类中设置指针,以指向B类方法中创建的NSMutableArray对象,将其作为参数传递给该方法。我无法通过返回数组来做到这一点,因为我想返回sqlite结果。

我想知道我是否这样做?我还没有编写整个方法(完成后会很长),但是我想知道我是否在开始剩下的时间之前正确地做了指针的东西。

//ClassA.m

//...
NSMutableArray *list;
[ClassB populateArrayFromSqlite:&list];
//Now do stuff with "list", which should point to the array created in populateArrayFromSqlite
//...

//ClassB.m
+(int)populateArrayFromSqlite:(NSMutableArray**)ar {
    NSMutableArray *array = [[NSMutableArray alloc] init];
    //Here there will be code that populates the array using sqlite (once I write it)
    //And then I need to set the "list" pointer in ClassA.m to point to this array
    ar = &array; //Is this how?

    return resultFromSqlite;
}

我做对了吗?还是我不了解某事?我猜这个指针到点的东西还没有与我联系。在阅读了一些有关指针的一般消息来源之后,我怀疑这就是我的做法,但是我的一部分不明白为什么AR的论点不能只是定期的指针(而不是指针到指针) 。

有帮助吗?

解决方案

是的,指针的指针有点远。这样做的简单方法是在A中创建一个空数组,并将常规数组指针传递给B,而B会填充它。如果您坚持在B中创建数组,我认为您可以这样做:

- (void) createArray: (NSMutableArray**) newArray
{
    NSAssert(newArray, @"I need a pointer, sweetheart.");
    *newArray = [[NSMutableArray alloc] init];
    [*newArray addObject:...];
}

其他提示

在Objective-C中,将指针更改为这样的对象并不常见。我们看到这样的主要时间是当方法有失败的潜力时,这一点将通过指针传递到一个 NSError 参考。例如, NSFileManager' - (BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error.

这样做的更常见的方法是让方法返回数组:

NSMutableArray * list = [ClassB mutableArrayFromSQLite];
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top