NSAllocateCollectable使用iPhone应用程序是否可能?

NSAllocateCollectable使用iPhone应用程序是否可能?,iphone,objective-c,xcode,Iphone,Objective C,Xcode,我正在开发一个iphone应用程序,当我编译它时,我收到一些警告。该应用程序可以工作,但删除所有警告可能会很有趣。否 这是其中之一,我无法理解,基本上是因为我是iPhone SDK的“新手”,这个类来自另一个代码(免费代码) 警告如下: 警告:函数“NSAllocateCollectable”的隐式声明 警告:初始化将指针从整数转换为不带强制转换的整数 代码如下: double *MatrixAllocateArray( NSUInteger rows, NSUInteger columns )

我正在开发一个iphone应用程序,当我编译它时,我收到一些警告。该应用程序可以工作,但删除所有警告可能会很有趣。否

这是其中之一,我无法理解,基本上是因为我是iPhone SDK的“新手”,这个类来自另一个代码(免费代码)

警告如下:

警告:函数“NSAllocateCollectable”的隐式声明 警告:初始化将指针从整数转换为不带强制转换的整数

代码如下:

double *MatrixAllocateArray( NSUInteger rows, NSUInteger columns )
{
     // Allocate an array to hold [rows][columns] matrix values
     NSCParameterAssert(rows!=0);
     NSCParameterAssert(columns!=0);
     __strong double *array = NSAllocateCollectable(SIZEOFARRAY(rows,columns),0); //(WARNINGS APPEAR HERE)
     NSCAssert2(array!=NULL,@"falled to allocate %dx%d matrix",rows,columns);

     return array;
}
正如您所看到的,这个函数试图分配一个矩阵,它被另一个函数调用

double *MatrixAllocateEmptyArray( NSUInteger rows, NSUInteger columns )
{
     // Allocate a matrix array and fill it with zeros
     __strong double *emptyArray = MatrixAllocateArray(rows,columns);
     bzero(emptyArray,SIZEOFARRAY(rows,columns));

     return emptyArray;
}
这是由我执行并需要的函数调用的:

- (id)initWithRows:(NSUInteger)rowCount columns:(NSUInteger)colCount
{
     // Create an empty matrix

     return [self initWithAllocatedArray:MatrixAllocateEmptyArray(rowCount,colCount)
           rows:rowCount
        columns:colCount];
}

iPhone程序没有垃圾收集器。在这种情况下,分配可收集的内存几乎毫无意义,所以你可能运气不好。您可能应该修复您的程序和/或框架,以使用传统的Objective-C内存管理实践。您发出特定警告的原因:

  • 函数“NSAllocateCollectable”的隐式声明

    您的iPhone应用程序没有
    NSAllocateCollectable
    声明,因此编译器将退回默认的C规则进行隐式函数声明,这意味着它将假定返回
    int

  • 初始化从整数生成指针而不进行强制转换

    由于前面的隐式声明问题,在编译器看来,您的代码似乎在尝试将
    int
    赋值给
    double*
    类型的变量-从整数类型到指针的隐式转换会导致警告