Frage

Wenn neue Eigenschaften zu Klassen hinzufügen, finde ich mich die gleichen Dinge immer und immer wieder in Xcode eingeben:

  1. add TYPE *NAME; (in .h-Schnittstelle)
  2. add @property (nonatomic, retain) TYPE *NAME; (in .h)
  3. add @synthesize NAME; (in .m)
  4. add [NAME release]; (in .m dealloc)

(Ich bin in einer nicht-Müll gesammelt Umgebung.)

Wie kann ich tun dies automatisch?

War es hilfreich?

Lösung

Das klingt ungefähr richtig. IIRC, die Objective-C 2.0 doc sagt Ihnen Schritt # 1 auszulassen möglicherweise in der Lage, aber sonst weiß ich nicht von irgendwelchen Verknüpfungen.

Sie könnten wahrscheinlich ein Benutzerskript schreiben so innerhalb Xcode zu tun. Siehe http://www.mactech.com/articles /mactech/Vol.23/23.01/2301XCode/index.html .

Andere Tipps

Nach der Dokumentation für Entwickler in 64bit Runtimes Sie Schritt auslassen 1 kannst.

Sie bei Andrew Pang RMModelObject - Ich habe nicht verwendet , aber es wirkt wie ein Objekt Basisklasse, die Modellerstellung vereinfacht.

Ich habe es nicht benutzt, aber hier ist etwas, was in der Readme-Datei hervorgehoben wird:

  
      
  • keine Notwendigkeit Instanzvariablen zu deklarieren,
  •   
  • keine Notwendigkeit, Zugriffsmethoden zu schreiben,
  •   
  • NSCopying Protokollunterstützung (-copyWithZone:)
  •   
  • NSCoding Protokollunterstützung (-initWithCoder:, -encodeWithCoder:)
  •   
  • -isEqual: und -hash` Implementierung,
  •   
  • keine Notwendigkeit -dealloc in den meisten Fällen zu schreiben.
  •   

Hier ist eine andere Lösung, die ich geändert von diesem Artikel (siehe auch der Anfangs Artikel )

Die Version im Blog war auf der Suche nach Variablen außerhalb des Blocks Variablendeklaration und wurde passend zu Methodennamen. Ich habe ein rohes fix getan nur für Variablen vor der ersten Suche ‚}‘. Dies wird brechen, wenn es mehrere Interface-Deklarationen in der Header-Datei ist.

habe ich die Ausgabe auf „Ersetzen Dokument conents“ und geben Sie als „Gesamtes Dokument“ ....

#!/usr/bin/python

thisfile = '''%%%{PBXFilePath}%%%'''
code = '''%%%{PBXAllText}%%%'''
selmark = '''%%%{PBXSelection}%%%'''

import re

if thisfile.endswith('.h'):
    variableEnd = code.find('\n', code.find('}'))
    properties = []
    memre = re.compile('\s+(?:IBOutlet)?\s+([^\-+@].*? \*?.*?;)')
    for match in memre.finditer(code[:variableEnd]):
        member = match.group(1)
        retain = member.find('*') != -1 and ', retain' or ''
        property = '@property (nonatomic%s) %s' % (retain,member)
        if code.find(property) == -1:
            properties.append(property)
    if properties:
        print '%s\n\n%s%s%s%s' % (code[:variableEnd],selmark,'\n'.join(properties),selmark,code[variableEnd:])
elif thisfile.endswith('.m'):
    headerfile = thisfile.replace('.m','.h')
    properties = []
    retains = []
    propre = re.compile('@property\s\((.*?)\)\s.*?\s\*?(.*?);')
    header = open(headerfile).read()
    for match in propre.finditer(header):
        if match.group(1).find('retain') != -1:
            retains.append(match.group(2))
        property = '@synthesize %s;' % match.group(2)
        if code.find(property) == -1:
            properties.append(property)
    pindex = code.find('\n', code.find('@implementation'))
    if properties and pindex != -1:
        output = '%s\n\n%s%s%s' % (code[:pindex],selmark,'\n'.join(properties),selmark)
        if retains:
            dindex = code.find('\n', code.find('(void)dealloc'))
            output += code[pindex:dindex]
            retainsstr = '\n\t'.join(['[%s release];' % retain for retain in retains])
            output += '\n\t%s' % retainsstr
            pindex = dindex
        output += code[pindex:]
        print output

Es gibt Kevin Callahan Accessorizer . Von der Webseite:

  

Accessorizer wählt die entsprechende   Eigenschaft Bezeich basierend auf Ivar Typ   - und kann auch explizite Accessoren (1.0) automatisch erzeugen ... aber   Accessorizer tut viel, viel mehr ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top