objective c - Why Am I Getting a CoreAnimation Exception When I Try To Show A Modal View? -


i having weird problem following code:

#import "mainapplicationviewcontroller.h" #import "passwordscreenviewcontroller.h"  @implementation mainapplicationviewcontroller  // designated initializer.  override if create controller programmatically , want perform customization not appropriate viewdidload. /* - (id)initwithnibname:(nsstring *)nibnameornil bundle:(nsbundle *)nibbundleornil {     self = [super initwithnibname:nibnameornil bundle:nibbundleornil];     if (self) {         // custom initialization.     }     return self; } */  // implement viewdidload additional setup after loading view, typically nib. - (void)viewdidload {     [super viewdidload];     if([[nsuserdefaults standarduserdefaults] boolforkey:@"apphasbeenlaunchedbefore"] == no){         uialertview *firstlaunch = [[uialertview alloc] initwithtitle:@"set password." message:@"this first time launch app. set password now?" delegate:self cancelbuttontitle:@"no" otherbuttontitles:@"yes", nil];         [firstlaunch show];         [firstlaunch release];     } }  /* // override allow orientations other default portrait orientation. - (bool)shouldautorotatetointerfaceorientation:(uiinterfaceorientation)interfaceorientation {     // return yes supported orientations.     return (interfaceorientation == uiinterfaceorientationportrait); } */  #pragma mark - #pragma mark uialertviewdelegate methods  - (void)alertview:(uialertview *)alertview diddismisswithbuttonindex:(nsinteger)buttonindex {     //no = 0. yes = 1.     if(buttonindex == 1) {         passwordscreenviewcontroller *psvc = [[passwordscreenviewcontroller alloc] init];         [self presentmodalviewcontroller:psvc animated:no];     } }  #pragma mark - #pragma mark memory management  - (void)didreceivememorywarning {     // releases view if doesn't have superview.     [super didreceivememorywarning];      // release cached data, images, etc. aren't in use. }  - (void)viewdidunload {     [super viewdidunload];     // release retained subviews of main view.     // e.g. self.myoutlet = nil; }   - (void)dealloc {     [super dealloc]; }   @end 

go "uialertviewdelegate methods pragma mark.

for reason, following message in console whenever try show modal view:

coreanimation: ignoring exception: * -[nsplaceholderstring initwithstring:]: nil argument

which makes no sense. see no reason pass nil argument, specially since there no particular possible cause prevent object being created. have googled crazy in last few days , have never seen particular problem. if has idea fix it, please let me know, out of ideas, don't know else try, , makes no sense.

things have tried far:

  • loadwithnibname:
  • try show modal view without calling alertview @ all.

edit:

passwordscreenview implementation:

    // //  passwordscreenviewcontroller.m // //  created  on 4/23/11. //  copyright 2011 . rights reserved. //  #import "passwordscreenviewcontroller.h" #import <security/security.h> #import "sfhfkeychainutils.h"  @implementation passwordscreenviewcontroller @synthesize p1, p2, p3, p4; @synthesize vp1, vp2, vp3, vp4; @synthesize delegate;  // implement viewdidload additional setup after loading view, typically nib. - (void)viewdidload {     [super viewdidload];     p1.text = @" ";     p2.text = @" ";     p3.text = @" ";     p4.text = @" ";     vp1.text = nil;     vp2.text = nil;     vp3.text = nil;     vp4.text = nil;     nserror *error;     currentpassword = [nsstring stringwithstring:[sfhfkeychainutils getpasswordforusername:@"user" andservicename:@"com.atanacross.myprincesses.password" error:&error]];     newpassword = [nsstring stringwithstring:nil];     repeatnewpassword = [nsstring stringwithstring:nil];     [p1 becomefirstresponder]; }  -(id)initwithmode:(nsstring *)mode {     self = [super init];     return self; }  #pragma mark - #pragma mark uitextfielddelegate methods  -(bool)textfield:(uitextfield *)textfield shouldchangecharactersinrange:(nsrange)range replacementstring:(nsstring *)string {     if(range.length != 1)     {         if(textfield == p1)         {             p1.text = string;             vp1.text = string;             [p2 becomefirstresponder];         }else if(textfield == p2)         {             p2.text = string;             vp2.text = string;             [p3 becomefirstresponder];         }else if(textfield == p3)         {             p3.text = string;             vp3.text = string;             [p4 becomefirstresponder];         }else if(textfield == p4)         {             p4.text = string;             vp4.text = string;         }     }else     {         if(textfield == p4)         {             p4.text = @" ";             vp4.text = nil;             [p3 becomefirstresponder];         }else if(textfield == p3)         {             p3.text = @" ";             vp3.text = nil;             [p2 becomefirstresponder];         }else if(textfield == p2)         {             p2.text = @" ";             vp2.text = nil;             [p1 becomefirstresponder];         }else if(textfield == p1)         {             p1.text = @" ";             vp1.text = nil;         }     }     return no; }  -(bool)textfieldshouldbeginediting:(uitextfield *)textfield {     if(textfield == vp1 || textfield == vp2 || textfield == vp3 || textfield == vp4)     {         return no;     }     return yes; }  #pragma mark - #pragma mark memory management  - (void)didreceivememorywarning {     // releases view if doesn't have superview.     [super didreceivememorywarning];      // release cached data, images, etc. aren't in use. }  - (void)viewdidunload {     [super viewdidunload];     // release retained subviews of main view.     // e.g. self.myoutlet = nil;     self.p1 = nil;     self.p2 = nil;     self.p3 = nil;     self.p4 = nil;     self.vp1 = nil;     self.vp2 = nil;     self.vp3 = nil;     self.vp4 = nil; }   - (void)dealloc {     [p1 release];     [p2 release];     [p3 release];     [p4 release];     [vp1 release];     [vp2 release];     [vp3 release];     [vp4 release];     [super dealloc]; }   @end 

newpassword = [nsstring stringwithstring:nil]; repeatnewpassword = [nsstring stringwithstring:nil]; 

this you're looking for. try initializing newpassword = nil or newpassword = @"".


Comments