i developing tweak ios using logos/theos.
i need store last 2 characters user has typed in @ times.
my code is:
static nsstring *lasttwochars = [[nsstring alloc] init]; ... if (lasttwochars.length < 2) { lasttwochars = [lasttwochars stringbyappendingstring:text]; } else { lasttwochars = [lasttwochars stringbyappendingstring:text]; lasttwochars = [lasttwochars substringfromindex:1]; } ...
(in scope, text
last character entered in keyboard)
this code works fine, until press third character. after long time of trial , error, found because variable lasttwochars
getting released, , becoming different object.
i cannot figure out how keep object being deallocated , changing object. i've tried retain
variable, either i'm doing wrong, or won't work.
any appreciated.
alright. figured out. droppy hinting @ problem.
i fixed retaining new strings:
if (lasttwochars.length < 2) { lasttwochars = [[lasttwochars stringbyappendingstring:text] retain]; } else { lasttwochars = [[lasttwochars stringbyappendingstring:text] retain]; lasttwochars = [[lasttwochars substringfromindex:1] retain]; }
i didn't know stringbyappendingstring
, substringfromindex
creating new nsstring
objects, again droppy.
edit: thought may memory leak, droppy confirmed was.
this new code:
if (lasttwochars.length < 2) { lasttwochars[lasttwochars.length] = (unichar) text; } else { lasttwochars[0] = lasttwochars[1]; lasttwochars[1] = (unichar) text; }
Comments
Post a Comment