Поместите все методы в .h файл автоматически - PullRequest
2 голосов
/ 08 февраля 2012

В файле реализации (.m) у меня 30 .. методов. Как я могу поместить их описание (все) в файл .h автоматически?

Ответы [ 3 ]

2 голосов
/ 08 февраля 2012

Швы трудно сделать правильно с регулярным выражением, но вы можете сделать это с помощью awk:

https://gist.github.com/1771131

#!/usr/bin/env awk -f
# print class and instance methods declarations from implementation
# Usage: ./printmethods.awk class.m or awk -f printmethods.awk class.m

/^[[:space:]]*@implementation/ {
  implementation = 1;
}

/^[[:space:]]*@end/ {
  implementation = 0;
}

/^[[:space:]]*[\-\+]/ {
  if(implementation) {
    method = 1;
    collect = "";
  }
}

/[^[:space:]]/ {
  if(implementation && method) {
    p = index($0, "{");
    if(p == 0) {
      if(collect == "")
        collect = $0
      else
        collect = collect $0 "\n";
    } else {
      method = 0;
      # trim white space and "{" from line end
      gsub("[\{[:space:]]*$", "", $0);
      collect = collect $0;
      # trim white space from start
      gsub("^[[:space:]]*", "", collect);
      print collect ";"
    }
  } 
}
0 голосов
/ 08 февраля 2012

Программа Accessorizer (в Mac App Store за 5 долларов) специально предназначена для решения этих неприятных ворчливых проблем в Xcode. Он может генерировать прототипы, а также синтезировать свойства, методы доступа, модули и т. Д.

Предостережение: это было немного обидчиво и грубо по моему опыту. Например, он может не понимать, что функция находится внутри многострочного комментария, и, таким образом, предоставлять ему нежелательный прототип. Но даже с учетом этих причуд это сэкономило мне время, затрачиваемое на 5 долларов.

Их сайт: http://www.kevincallahan.org/software/accessorizer.html

0 голосов
/ 08 февраля 2012

Напишите фрагмент кода, который извлечет все определения методов (используйте регулярные выражения для их обнаружения), а затем просто добавьте его в файл h и "\; \ n".

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