Nu se pot adăuga obiecte la un NSMutableArray

Așa că am următorul cod:

NSMutableArray *array
array=[[NSMutableArray alloc] init];
[array addObject: object1];
[array addObject: object2];
NSLog(@"%@",array);

Când folosesc aplicația în iPod-ul meu conectat la Mac, NSLog scrie doar null, nu primesc object1 object2. ce fac greșit?

PS: array is a property in .h @property (nonatomic, retain) NSMutableArray *array;

0
Puteți posta și un NSLog al celor două obiecte?
adăugat autor Alladinian, sursa
De asemenea, dacă aveți deja această proprietate, care este scopul de a face NSMutableArray * array (în care btw lipsește o punct și virgulă)?
adăugat autor Alladinian, sursa
@Stefan nu ar construi fără metode @synthesize sau getter/setter.
adăugat autor Adam, sursa
Aveți @synthesize array; în fișierul .m?
adăugat autor Stefan, sursa
@Adam, știu, vreau doar să aflu dacă OP utilizează de fapt @synthesize sau are propria implementare a getter/setter.
adăugat autor Stefan, sursa

5 răspunsuri

Should it be:

array=[[NSMutableArray alloc] init];
0
adăugat
întrebare editată
adăugat autor adr, sursa

Codul dvs. [[NSMutableArray]] ar trebui să fie [[NSMutableArray alinia] init] . Acest lucru ar funcționa, dar nu este o modalitate adecvată de a inițializa obiecte. Nu ați postat ceea ce este array dvs., presupun că ați declarat că este greșit. Ar trebui să fie un pointer la un obiect NSMutableArray . Iată un cod de lucru:

NSMutableArray *array=[[NSMutableArray alloc] init];
[array addObject: @"a"];
[array addObject: @"b"];
NSLog(@"%@",array);
0
adăugat
întrebare editat, am ca codul dvs.
adăugat autor adr, sursa
@adr Dacă aveți o proprietate sintetizată, nu aveți nevoie de o variabilă locală.
adăugat autor Adam, sursa
Poate l-a enumerat ca membru.
adăugat autor Luke, sursa

Ai putea încerca să o faci într-o singură linie.

 NSMutableArray *array = [[NSMutableArray alloc] arrayWithObjects:@"a", @"b", nil];
 NSLog(@"%@",array);
0
adăugat
arrayWithObjects este o metodă de clasă
adăugat autor Alladinian, sursa
@Adam sau [NSMutableArray arrayWithObjects: @ "a", "b", zero]
adăugat autor Alladinian, sursa
@ Right alladinian, ar fi trebuit să folosească în schimb initWithObjects: .
adăugat autor Adam, sursa

Ați declarat matricea drept proprietate. IVar corespunzător devine inițializat la zero. Deci, în metoda init trebuie să o inițializați:

Presupunând că ai folosit

@synthesize array;

În metoda init

if (self) {
//other init stuff
array = [[NSMutableArray array] retain];
}

Atunci când adăugați lucruri

[self.array addObject: object];

Rețineți, de asemenea, că obiectele pe care le puneți trebuie să fie inițializate corespunzător și nu nu sunt valabile. Deci, încercați să vă conectați și la acest lucru

NSLog("the object %@ was put in array. Array contains: %@",object, self.array);

Și în dealloc, eliberați matricea!

0
adăugat

Nu vă inițializați matricea, de aceea nu returnează nimic.

array=[[NSMutableArray alloc] init];
[array addObject: object1];
[array addObject: object2];
NSLog(@" Array is:%@",array);

Amintiți-vă să o eliberați ulterior (cu excepția cazului în care utilizați ARC)

0
adăugat
iOS dezvoltatori, România — Moldova
iOS dezvoltatori, România — Moldova
21 participanți

Parteneri: ciupacabra.com, @php_ro, @js_ro, @node_ro, @seo_ro Android: @ro_android