在我的应用程序中,我有一个用户必须填写表单的 View 。但是,有时应用程序在这里崩溃,在这个函数中,那个简单的 cath 值字段并构建一个 url 给
-(NSString*)urlToUpload{
NSString *string1 =[[NSString alloc]init];
string1= [NSString stringWithFormat:@"?nombre="];
NSString *string2 = [string1 stringByAppendingString:nameAdded];
//crash here
NSString *string3 = [string2 stringByAppendingString:@"&horario="];
NSString *string4 = [string3 stringByAppendingString:horarioAdded];
NSString *string5 = [string4 stringByAppendingString:@"&info="];
NSString *string6 = [string5 stringByAppendingString:infoAdded];
NSString *string7 = [string6 stringByAppendingString:@"&offerta="];
NSString *string8 = [string7 stringByAppendingString:offertaAdded];
NSString *lat_string = [[[NSString alloc] initWithFormat:@"%f",locationToUpload2.latitude] autorelease];
NSString *lon_string = [[[NSString alloc] initWithFormat:@"%f",locationToUpload2.longitude] autorelease];
NSString *string9 = [string8 stringByAppendingString:@"&latitude="];
NSString *string10 = [string9 stringByAppendingString:lat_string];
NSString *string11 = [string10 stringByAppendingString:@"&longitude="];
NSString *string12 = [string11 stringByAppendingString:lon_string];
NSString *url1 = [NSString stringWithFormat:@"http://myserverside/mysql_up.php"];
NSString *url = [url1 stringByAppendingString:string12];
return url;
}
编辑:
当 textField 中有空白时,似乎问题出现在 nameAdded 上(即 MisterB 没有崩溃,Mister B 是)。 但我正在使用:
nameAdded =[[nameField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLOg 给的 nameAdded 是 Mister%20B。
崩溃仍然出现...
最佳答案
只需使用一个stringWithFormat:
:
- (NSString *)urlToUpload {
NSString *url = [NSString stringWithFormat:@"http://myserverside/mysql_up.php?nombre=%@&horario=%@&info=%@&offerta=%@&latitude=%f&longitude=%f",
[nameAdded stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
[horarioAdded stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
[infoAdded stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
[offertaAdded stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
locationToUpload2.latitude, locationToUpload2.longitude];
return url;
}
确保引用的变量有效。
在您的原始代码中,无需分配/初始化 NSString 然后将另一个字符串分配给同一变量。这是内存泄漏 (string1
)。
如果你真的想按照你拥有的方式构建你的代码,至少使用一个 NSMutableString
并附加到那个可变字符串。创建十几个 NSString
变量是错误的做法。
更新:确保添加到 URL 的每个字符串都正确转义。
关于ios - iphone - 应用程序崩溃的形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16846845/