iphone - NSMutableArray crashes when adding after proper initialization -
i have nsmutablearray defined property, synthesized , have assigned newly created instance of nsmutablearray. after application crashes whenever try adding object nsmutablearray.
page.h
@interface page : nsobject   {       nsstring *name;       uiimage *image;       nsmutablearray *questions;   } @property (nonatomic, copy) nsstring *name;   @property (nonatomic, retain) uiimage *image;   @property (nonatomic, copy) nsmutablearray *questions;   @end page.m
@implementation page   @synthesize name, image, questions;   @end   relevant code
page *testpage = [[page alloc] init];   testpage.image = [uiimage imagenamed:@"cooperatief  leren veenman-11.jpg"];   testpage.name = [nsstring stringwithstring:@"cooperatief  leren veenman-11.jpg"];   testpage.questions = [[nsmutablearray alloc] init];   [testpage.questions addobject:[nsnumber numberwithfloat:arc4random()]];   the debugger reveals moment use testpage.questions = [[nsmutablearray alloc] init]; type of testpage.questions changes nsmutablearray* __nsarrayl* (or __nsarrayi*, not sure). suspect problem, find extremely odd. know what's happening here?
the problem you've declared property copy.  means setter going implemented this:
- (void) setquestions:(nsmutablearray *)array {   if (array != questions) {     [questions release];     questions = [array copy];   } } the kicker here if -copy array (whether immutable or mutable), always immutable nsarray.  
so fix this, change property retain instead of copy, , fix memory leak:
testpage.questions = [[nsmutablearray alloc] init]; it should be:
testpage.questions = [nsmutablearray array]; 
Comments
Post a Comment