2012-04-11 8 views
1

Ich mache meine erste App, und schon auf Android gemacht, und versuche jetzt, es auf dem iPhone zu machen, aber habe keine objektiven c Erfahrung. Die App ist super einfach, außer für einen Teil, das Array.Universal-Array in Objektiv C

Die App verfügt über eine Schaltfläche, die, wenn sie gedrückt wird, Informationen in einem Array speichern muss. Das Problem, auf das ich stoße, ist, dass wenn ich das Array in der Methode erstelle, wo die Button-Klick-Aktionen stattfinden, jedes Mal, wenn ich auf die Schaltfläche klicke, ein neues Array erzeugt und den Punkt des Arrays besiegt. Wenn ich das Array außerhalb der Methode mache, geht es entweder nicht in die Methode (Fehler sagt undefiniert) oder, wenn ich das Objekt in der .h-Datei deklariere, kompiliert das Programm, aber wenn ich den Knopf drücke, stürzt es ab.

Jede Hilfe würde sehr geschätzt werden. Beispiele wären toll, aber selbst wenn mir jemand in die richtige Richtung zeigen könnte, würde ich davor bewahren, kahl zu werden.

+0

Ich glaube, Sie für 'NSMutableArray' suchen, aber ich bin mir nicht sicher, da ich nicht sehr gut verstehe Ihre Frage. Kannst du bitte klarstellen, was du zu tun versuchst und den Code posten, der zeigt, was du getan hast? – Saphrosit

+2

Geben Sie einen Code ein. –

+0

Welche Sprachen kennen Sie? Übergeben von Werten ist ziemlich genau das gleiche wie in C/C++. Es ist nur so, dass die Objekte lustig geformt sind und die Aufrufe wie Array-Index-Ops aussehen. –

Antwort

3

versuchen, etwas wie folgt aus (dies ist nicht ARC) -

@interface MyViewController : UIViewController { 

    NSMutableArray *myArray; 

} 


@implementation MyViewController 

-(id)init { 

    self = [super init]; 

    if (self) { 

     myArray = [[NSMutableArray alloc] init]; 

    } 

    return self; 

} 


-(void)dealloc { 

    [myArray release]; 

    [super dealloc]; 

} 


-(IBAction)buttonPressed { 

    [myArray addObject:someObject]; 

} 

@end 
2

Sie müssen Ihr Array als Instanzvariable (AKA „Ivar“) innerhalb der geschweiften Klammern Abschnitt der der Interface-Deklaration in Ihrer .h-Datei deklarieren und auch initialisieren es in Ihrem benannten Initialisierer.

In der H-Datei:

@interface MyClass : NSObject { 
    NSMutableArray *myArray 
} 
// methods 
@end 

In der .m-Datei:

-(id)init { 
    self = [super init]; 
    if (self) { 
     myArray = [NSMutableArray array]; 
    } 
    return self; 
} 

Jetzt können Sie myArray in allen Instanzmethoden Ihrer Klasse.

BEARBEITEN: In diesem Beispiel wird davon ausgegangen, dass Sie die automatische Referenzzählung verwenden. Da dies Ihre erste App ist, ist die Verwendung von ARC eine gute Idee (XCode fragt Sie, ob Sie diese beim Erstellen eines neuen Projekts verwenden möchten).

+0

Sie sollten angeben, dass dieses Beispiel ARC ist. Das OP verwendet möglicherweise ARC nicht, da die Anwendung abgestürzt ist, wenn das im Header deklarierte Array verwendet wurde (vorausgesetzt, es wurde in der Schnittstelle ordnungsgemäß definiert). – Joe

+0

@Joe Sie haben Recht, ich habe irgendwie angenommen, dass es ARC wegen der "Ich mache meine erste App" Teil der Post, aber es gibt keine 100% ige Gewissheit. Vielen Dank! – dasblinkenlight

+0

@dasblinkenlight sorry nur dupliziert deine Antwort, es war nicht hier, als ich anfing es zu schreiben! – SomaMan

Verwandte Themen