2011-11-07 3 views
0

Я хочу создать функцию, чтобы вернуть 1d массива с 2-х элементами в нем что-то, как показано ниже:Что такое самый простой способ работы массивов в объективе-c?

(NSArray *) myFunction { 
NSArray * myArr = [[NSArray alloc]initwithobjects:[NSNumbers numberwithfloat:1.0f],[NSNumbers numberwithfloat:1.0f]]; 
//the above line is just pseudo code 

} 

, но когда я хочу, чтобы получить NSArray сформировать эту функцию я хочу сделать это в самом простом способе которого его представляется невозможным в Objective-C это то, что я написал, чтобы получить два простых значение с плавающей точкой, которое не appropariate, но я не имею дополнительные знаний о том, как сделать это в более простом способе

NSArray *tt2 = [[NSArray alloc] initWithArray:[self myFunction]]; 
float fp1=0.0f; 
    float fp2=0.0f; 
    BOOL firstTime = YES; 
    for(NSNumber *n in tt2) 
    { 
     if (firstTime) { 
      NSLog(@"%@" , n); 
      fp1 = [n floatValue]; 
      firstTime = NO; 
     } 
     else { 
      fp2 = [n floatValue]; 
     } 

    } 

выше коды это смешно, но у меня нет другого выбора, если вы не посоветуете мне как я могу преобразовать nsarray в nsnumber, а затем nsnumber to float []

ответ

3

Если вы только сохраняете поплавки, вы можете просто использовать массив C. NSArray может хранить только объекты.

Однако, похоже, вы не слышали о методе objectAtIndex?

NSNumber *firstNumber = [myArray objectAtIndex:0]; 
NSNumber *secondNumber = [myArray objectAtIndex:1]; 

Помогло ли это с вашей ситуацией, на самом деле не совсем ясно, что вы пытаетесь сделать из вопроса.

+0

Я где-то читал, что мы не можем вернуть float [] из другой функции. вот почему мы должны создать много раздутого кода. –

+0

Это действительно так, или, по крайней мере, это не так просто - я этого не знал, спасибо за информацию! Я думаю, вы могли бы иметь массив C как ivar, хотя, если вы не получаете доступ к нему из других объектов. – jrturton

2

Просто используйте массив C.

// C function returning dynamically allocated array of floats. 
float *CreateNumbers(void) 
{ 
    float *numArray = malloc(sizeof(float)); 
    numArray[0] = 1.0; 
    numArray[1] = 2.0; 

    return numArray; 
} 


- (void)exampleMethod 
{ 
    float *numbers = CreateNumbers(); 
    float val1 = numbers[0]; 
    float val2 = numbers[1]; 

    NSLog(@"val1: %.2f, val2: %.2f\n", val1, val2); 

    free(numbers); 
} 
Смежные вопросы