ios - Can I trust objectForKey right after setObject in NSCache? -


considering sample code (cache instance of nscache):

- (id)objfromcache {     if ([cache objectforkey:@"myobject"] == nil)         [cache setobject:[self generateobject] forkey:@"myobject"];      return [cache objectforkey:@"myobject"]; } 

should trust code? mean, objectforkey:@"myobject" ever return nil right after setobject:forkey:@"myobject"? if so, whould change if while?

what's best way handle situation? thanks!

at least in multi-threaded environment cannot assume nscache returns object inserted.

also if first call [cache objectforkey:@"myobject"] not return nil, second 1 in return statement return nil.

so play safe , write method as

- (id)objfromcache {     id value = [cache objectforkey:@"myobject"];     if (value == nil) {         value = [self generateobject];         [cache setobject:value forkey:@"myobject"];     }     return value; } 

Comments

Popular posts from this blog

SPSS keyboard combination alters encoding -

Add new record to the table by click on the button in Microsoft Access -

javascript - jQuery .height() return 0 when visible but non-0 when hidden -