iphone - Multiple sharedInstance called failed -


in application have called sharedinstance multiple time in multiple method deffinition , here code,

method 1

 -(void) showactionsheet:(id)sender forevent:(uievent*)event  {   if(isquantity==yes)   {     [[webservice sharedinstance] getquantity:^(bool result)      {       if(result)      {       nslog(@"success");       nsmanagedobjectcontext *context = [[dataaccesslayer sharedinstance] managedobjectcontext];       quantity = [context fetchobjectsforentityname:nsstringfromclass([getquantity class]) withsortcolumn:nil withsortdescending:true withpredicate:nil];              nslog(@"array ->%@",quantity);              isquantity=no;          }      }];   }   popovercontroller1 = [[tspopovercontroller alloc]initwithcontentviewcontroller:tableviewcontroller1];  popovercontroller1.cornerradius = 5;  popovercontroller1.titletext = @"quantity";  popovercontroller1.popoverbasecolor = [uicolor blackcolor];  popovercontroller1.popovergradient= no; [popovercontroller1 showpopoverwithtouch:event]; } 

method 2

-(void) showactionsheetw:(id)sender forevent:(uievent*)events    { if(issize==yes) {     [[webservice sharedinstance] getdimension:^(bool result)      {          if(result){               nslog(@"success");              nsmanagedobjectcontext *context = [[dataaccesslayer sharedinstance] managedobjectcontext];              dime = [context fetchobjectsforentityname:nsstringfromclass([getdimension class]) withsortcolumn:nil withsortdescending:false withpredicate:nil];              nslog(@"array ->%@",dime);            }      }]; } popovercontroller2 = [[tspopovercontroller alloc] initwithcontentviewcontroller:tableviewcontroller2]; popovercontroller2.cornerradius = 5; popovercontroller2.titletext = @"size"; popovercontroller2.popoverbasecolor = [uicolor blackcolor]; popovercontroller2.popovergradient= no; //    popovercontroller.arrowposition = tspopoverarrowpositionhorizontal; [popovercontroller2 showpopoverwithtouch:events]; } 

edit

 - (void) getdimension:(void (^)(bool))handler { jbcontainedurlconnection *connection = [[jbcontainedurlconnection alloc]init ];  [connection initwithgeturl:ip methodname:getdimension param:nil andcompletionhandler:^(jbcontainedurlconnection *connection, nserror *error, nsstring *urlstring, nsdictionary *userinfo, nsdata *response)  {      if(error)      {          nslog(@"error: %@", error);          handler(false);      }      else      {          if(response == nil)              handler(false);          else          {              nsmanagedobjectcontext *context = [[dataaccesslayer sharedinstance] managedobjectcontext];              nsarray *existingresults = [context fetchobjectsforentityname:nsstringfromclass([getdimension class]) withsortcolumn:nil withsortdescending:false withpredicate:nil];              (nsmanagedobject *obj in existingresults)                  [context deleteobject:obj];              [[dataaccesslayer sharedinstance] savecontext];              id responsedata = [self dictionaryfromresponse:response];              if(responsedata == nil)                  handler(false);               else              {                  nslog(@"dimension response: %@", [[nsstring alloc] initwithdata:response encoding:nsutf8stringencoding]);                  nsarray *data=[responsedata objectforkey:@"getdimensionresult"];                   nslog(@"getdimensionresult :%@",data);                  for( nsdictionary *dict in data){                      getdimension *userdetails = [getdimension newobject];                      [userdetails fillfromdictionary:dict];                   }                  [[dataaccesslayer sharedinstance] savecontext];                  handler(true);              }          }         }  }]; }    - (void) getquantity:(void (^)(bool))handler  {  jbcontainedurlconnection *connection = [[jbcontainedurlconnection alloc]init ];  [connection initwithgeturl:ip methodname:getquantity param:nil andcompletionhandler:^(jbcontainedurlconnection *connection, nserror *error, nsstring *urlstring, nsdictionary *userinfo, nsdata *response)  {      if(error)      {          nslog(@"error: %@", error);          handler(false);      }      else      {          if(response == nil)              handler(false);          else          {              nsmanagedobjectcontext *context = [[dataaccesslayer sharedinstance] managedobjectcontext];              nsarray *existingresults = [context fetchobjectsforentityname:nsstringfromclass([getquantity class]) withsortcolumn:nil withsortdescending:false withpredicate:nil];              (nsmanagedobject *obj in existingresults)                  [context deleteobject:obj];              [[dataaccesslayer sharedinstance] savecontext];              id responsedata = [self dictionaryfromresponse:response];              if(responsedata == nil)                  handler(false);               else              {                  nslog(@"getquantityresult response: %@", [[nsstring alloc] initwithdata:response encoding:nsutf8stringencoding]);                  nsarray *data=[responsedata objectforkey:@"getquantityresult"];                 // nslog(@"getdimensionresult :%@",data);                  for( nsdictionary *dict in data){                      getquantity *userdetails = [getquantity newobject];                      [userdetails fillfromdictionary:dict];                   }                  [[dataaccesslayer sharedinstance] savecontext];                  handler(true);              }          }  }  }];  } 

instance method

 + (id)sharedinstance { @synchronized(self) {     if (manager == nil)         manager = [[self alloc] init]; } return manager; }   -(id)init { if(self = [super init]) { } return self; }  -(nsstring *)nsstringfromdictionaryusingjson:(id)dictionary { sbjsonwriter *writer = [[sbjsonwriter alloc]init]; return [writer stringwithobject:dictionary];  }   -(id)dictionaryfromresponse:(nsdata *)response  { nsstring *responsebody =  [[nsstring alloc] initwithdata:response encoding:nsasciistringencoding]; sbjsonparser *parser = [[sbjsonparser alloc]init]; return [parser objectwithstring:responsebody  error:nil]; } 

sharedinstance works 1 time,ie,. if call of method first worked,if calls other method second time app gets crashed.can 1 please me sort out

i guess sharedinstance method messy.

it should

+ (id)sharedinstance {     if (manager == nil)         manager = [[self alloc] init];  return manager; } 

enjoy programming !


Comments

Popular posts from this blog

.htaccess - First slash is removed after domain when entering a webpage in the browser -

Automatically create pages in phpfox -

c# - Farseer ContactListener is not working -