+(NSString*) getBaseURL {
NSUserDefaults *userSettings = [NSUserDefaults standardUserDefaults];
NSString* host = [userSettings stringForKey:@"host"];
NSString* port = [userSettings stringForKey:@"port"];
NSString* baseURL = [[NSString alloc] initWithFormat: @"http://%@:%@", host, port];
return baseURL;
}
Hier möchten Sie wahrscheinlich der Anrufer die Zeichenfolge behalten, wenn sie es wünschen, Sie tun es für sie hier, und es kann Lecks verursachen, wenn sie nicht ordnungsgemäß verwendet wurden, die Art und Weise iw dies Code Ould indem er erklärt, Autorelease für die baseURL so
NSString* baseURL = [[[NSString alloc] initWithFormat: @"http://%@:%@", host, port]autorelease];
return baseURL;
}
hier
+(NSString*) getChartURL:(int)width height:(int)height labels:(BOOL)labels time:(int)time monitorId:(NSString*)monitorId ruleInstanceId:(NSString*)ruleInstanceId {
NSString* returnURL;
if ([self isConfigured]){
NSString* suffix = [[NSString alloc] initWithFormat: @"/Mobile/ChartServlet?width=%d&height=%d&time=%d&monitor_id=%@&rule_instance_id=%@", width, height, time, monitorId, ruleInstanceId];
returnURL = [[self getBaseURL] stringByAppendingString:suffix];
} else {
if (width == 320) {
returnURL = @"http://Iphoneopt.bravehost.com/smallchart.png";
} else {
returnURL = [[NSString alloc] initWithFormat: @"http://Iphoneopt.bravehost.com/largechart%d.png", time];
labels = FALSE;
}
}
if (labels) {
NSString* labelsSuffix = [[NSString alloc] initWithFormat: @"&labels=%d", labels];
returnURL = [returnURL stringByAppendingString:labelsSuffix];
}
NSLog(@"returnURL=%@", returnURL);
return returnURL;
}
hier nicht veröffentlichen jede von der Zeichenfolge, die Sie zugewiesen haben, schlage ich vor, [NSString stringWithFormat:] anstelle von Zuweisung zu verwenden, aber wenn Sie sie zuweisen, müssen Sie sie irgendwo freigeben.
Lesen Sie sich die Autorelease-Methode und die Auto Release-Pools durch. Sie sind speziell für dieses Problem konzipiert. Wenn Sie die Klassenmethode stringWithFormat verwenden, wird darüber hinaus eine automatisch freigegebene Version von NSString zurückgegeben. – Lounges