Функции поддержки iPhone SDK Objective C в функциях?

Я знаю что JavaScript, например, функции поддержек в функциях, как так:

function doSomething(){

  function doAnothingThing(){
    //this function is redefined every time doSomething() is called and only exists inside doSomething()    
  }

  //you can also stick it inside of conditions

  if(yes){
    function doSomethingElse(){
      //this function only exists if yes is true
    }
  }


}

Цель-c поддерживает это? Теоретический пример:

 -(void) doSomething:(id) sender{
   -(void) respondToEvent: (id) sender{
     //theoretically? ... please?
   }
}

ПРЕМИЯ: Каков надлежащий термин для "локальной" функции?

6
задан Moshe 17 March 2010 в 13:42
поделиться

2 ответа

Обычный термин - вложенная функция. gcc поддерживает вложенные функции как расширение C (по умолчанию отключено). Я не думаю, что эта возможность доступна для Objective-C (или C++) с gcc, хотя, даже если бы она была, вероятно, не стоит ее использовать (переносимость и т.д.).

gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html

9
ответ дан 8 December 2019 в 03:52
поделиться

По умолчанию Xcode запрещает вложенные функции.

Если вы хотите включить их, откройте информацию о своем проекте, перейдите на вкладку «Сборка» и установите для параметра «Другие флаги C» (в разделе «GCC 4.2 - Язык») значение «-fnested-functions». ".

(Это хранится в вашем файле project.pbxproj как "OTHER_CFLAGS =" -fnested-functions ";"

7
ответ дан 8 December 2019 в 03:52
поделиться