NSAllocateCollectable можно с приложением iPhone? - PullRequest
1 голос
/ 09 сентября 2010

Я разрабатываю приложение для 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];
}

1 Ответ

2 голосов
/ 09 сентября 2010

Для программ iPhone нет сборщика мусора.Выделение собираемой памяти бессмысленно в этой ситуации, так что вам, вероятно, не повезло.Вы, вероятно, должны исправить свою программу и / или структуру, чтобы использовать традиционные методы управления памятью Objective-C.Причины для ваших конкретных предупреждений:

  1. implicit declaration of function 'NSAllocateCollectable'

    Нет никакого объявления NSAllocateCollectable для вашего приложения для iPhone, поэтому компилятор обратится кправила C по умолчанию для неявных объявлений функций, то есть предполагается, что он возвращает int.

  2. initialization makes pointer from integer without a cast

    Из-за предыдущей проблемы с неявным объявлением,ваш код выглядит для компилятора так, как будто он пытается присвоить int переменной типа double * - неявные преобразования целочисленных типов в указатели являются причиной для предупреждений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...