我在Objective-C中编写应用程序,我收到此错误:
MyApp(2121,0xb0185000)malloc:***对象0x1068310的错误:double free
***在malloc_error_break中设置断点以进行调试
当我发布一个NSAutoreleasePool并且我无法弄清楚我要发布两次的对象时,就会发生这种情况.
我该如何设置他的断点?
有没有办法知道这个"对象0x1068310"是什么?
我正在声明一系列处理通信协议的静态类.我想声明一个处理常见消息的父类,如ACK,内联错误......
我需要一个静态var来保存当前正在处理的元素,我想在父类中声明它.
我是这样做的:
parent.m
@implementation ServerParser
static NSString * currentElement;
Run Code Online (Sandbox Code Playgroud)
但是子类没有查看currentElement.
我正在尝试计算百分比"因子".也就是说,给定20%,将其转换为0.2(我的意图是稍后将值乘以该值并获得20%的值).
无论如何,这个问题与这段代码有关:
public static void main(String[] args) {
int roundingMode = BigDecimal.ROUND_FLOOR;
BigDecimal hundred = new BigDecimal("100");
BigDecimal percentageFactor = null;
BigDecimal percentage = new BigDecimal("20");
BigDecimal value = new BigDecimal("500");
percentageFactor = percentage.divide(hundred, roundingMode);
float f = percentage.floatValue() / hundred.floatValue();
f = value.floatValue() * f;
BigDecimal aux = value.multiply(percentageFactor);
System.out.println("factor:"+percentageFactor.toString());
System.out.println("final falue:"+aux.toString());
System.out.println("Float Value:"+f);
}
Run Code Online (Sandbox Code Playgroud)
我希望这个结果是这样的:
factor: 0.2
final value: 100
float value: 100
Run Code Online (Sandbox Code Playgroud)
但是percentage.divide(hundred, roundingMode);返回零,因此我得到:
factor:0
final falue:0
Float Value:100.0
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?如何正确划分两位大小数?
顺便说一下,我正在使用,BigDecimal因为我将计算货币百分比,所以我想要控制四舍五入.
我正在尝试做一些不应该那么复杂的事情,但我无法弄明白.我有一个显示UITableView的UIViewController.我想在用户按行时显示上下文菜单.我希望这是一个带有标签和按钮的半透明视图.我可以使用AlertView,但我希望完全控制标签和按钮的格式,并希望使用Interface Builder.
所以我创建了我的小视图250x290,将alpha设置为.75并创建一个带有出口的视图控制器来处理不同的用户事件.
现在我想呈现它.如果我使用presentModalViewController两个(不希望的)事情发生1)视图覆盖所有屏幕(但状态栏).2)它是半透明的,但我看到它"背后"它不是父视图而是应用程序根视图.
我已经尝试将其添加为子视图,但没有任何反应,所以我没有做正确的事情:
RestaurantContextVC* modalViewController = [[[RestaurantContextVC alloc] initWithNibName:@"RestaurantContextView" bundle:nil] autorelease];
[self.view addSubview:modalViewController.view];
Run Code Online (Sandbox Code Playgroud)
有可能做我想要的吗?提前致谢.
Gonso
我想在我的iPhone应用程序中添加一个视图,用户可以通过一系列Web加载的图像滚动(分页).
我一直在阅读很多线程,其中大多数最终建议使用Three20 lib.我试过这个并且看起来很复杂并且体积很大(1.2Mb添加到我的应用程序中).另外我只需要TTPhotoViewContoller类,但我必须与整个Three20软件包集成.
在iPhone上有一个较轻的解决方案或组件来做图像滚动吗?
提前致谢.
Gonso
我有核心数据(适用于iPhone)的典型模型,包括部门和员工(部门 - >>员工).
我不想在每次加载时加载一个部门的所有员工,所以我认为我将Employee创建为一个获取的财产.我以为我可以像这样定义一些Predicate:
employee.deparmentId = department.departmentId
Run Code Online (Sandbox Code Playgroud)
但我不能(使用Xcode图形编辑器).
现在,阅读一些帖子,我倾向于为部门与员工(及其反向)定义一个关系,并使用它.
我的问题是:懒人加载多对多关系?或者,每次创建(检索)部门列表时,它是否会在"数据库"中加载我的所有员工?
在此先感谢Gonso
对于Objective-c编程和发布对象我是一个新手,这是我最头疼的问题.我总是怀疑需要释放什么,而我的时代我最终会发布错误的变量并导致BAD EXEC崩溃.我已经阅读了关于内存管理的苹果指南,但我总是从他们的例子到我的代码.
其中一种情况是我的单身人士(我是一个大单身人士).
我有一个定义如下:
static Configuration* _instance;
+(Configuration*)getInstance{
if (_instance == NULL){
_instance = [Configuration alloc];
[_instance initConfig];
}
return _instance;
}
Run Code Online (Sandbox Code Playgroud)
在我的代码中我使用它像这样:
//Store configuration
Configuration* conf = [Configuration getInstance];
conf.userName = self.userName.text;
conf.cellPhone = self.phoneNumber.text;
Run Code Online (Sandbox Code Playgroud)
我需要释放"conf"变量吗?
我什么时候应该发布_instance?
由于我在iPhone上运行此代码,我不发布的变量会发生什么?它们会影响iPhone的性能吗?
可能重复:
如何在应用程序的设置包中显示应用程序版本修订版?
我有一个iPhone应用程序,将当前版本显示为设置常量(就像Skype一样).
当我发布应用程序的第一个版本时,我使用此代码来设置应用程序设置:
- (void)registerDefaultsFromSettingsBundle {
NSString *settingsBundle = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"bundle"];
if(!settingsBundle) {
NSLog(@"Could not find Settings.bundle");
return;
}
NSDictionary *settings = [NSDictionary dictionaryWithContentsOfFile:[settingsBundle stringByAppendingPathComponent:@"Root.plist"]];
NSArray *preferences = [settings objectForKey:@"PreferenceSpecifiers"];
NSMutableDictionary *defaultsToRegister = [[NSMutableDictionary alloc] initWithCapacity:[preferences count]];
for(NSDictionary *prefSpecification in preferences) {
NSString *key = [prefSpecification objectForKey:@"Key"];
if(key) {
[defaultsToRegister setObject:[prefSpecification objectForKey:@"DefaultValue"] forKey:key];
}
}
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultsToRegister];
[defaultsToRegister release];
}
Run Code Online (Sandbox Code Playgroud)
这工作得很好,花花公子.
我现在面临的问题是,如果更新应用程序,则不会重写这些默认值(设置),因此不会更新应用程序版本.
如何强制每次安装时都设置特定的设置?
谢谢Gonso
我在iPhone上实现了地图应用程序.我希望地图放大用户的当前位置.我想根据准确性(模拟地图应用程序的工作方式)进行缩放.
我实现这个方法:
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation {
Run Code Online (Sandbox Code Playgroud)
我面临的问题是CLLocation为我提供了属性horizontalAccuracy和verticalAccuracy的准确性,它最终意味着米.但是,为了使地图居中,我使用这个:
MKCoordinateRegion region;
MKCoordinateSpan span;
region.center = newLocation.coordinate;
span.latitudeDelta=.005; //THIS IS HARDCODED
span.longitudeDelta=.005; //THIS IS HARDCODED
region.span = span;
[mapView setRegion:region animated:YES];
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种基于horizontalAccuracy(以米为单位)计算latitudeDelta(以度为单位)的方法.
它不需要是精确的转换(我不期待转换公式,这将需要相当多的计算,包括当前位置),只是一些aprox值.
有任何想法吗?
谢谢.Gonso
我有一个带有Locations表的Microsoft SQL Server数据库.每个位置都有其地址和纬度和经度坐标.
在我的应用程序中,用户可以输入一个邮政编码,我们会返回一个靠近位置的列表.这是我的方法.a)使用zipcode DB我在lat,lon搜索邮政编码(这是中心点).b)我运行这样的搜索
SELECT Position_ID, distance(pos_lon,pos_lat,zip_lon,zip_lat) dist
FROM Positions
ORDER BY dist
Run Code Online (Sandbox Code Playgroud)
"距离"是计算两点之间距离的函数.
问题是,随着我的位置数据库增加,运行这些搜索的时间开始增长.
有更好的方法吗?
我必须解析一个大的HTML文件,我只对一小部分(一个表)感兴趣.所以我考虑使用XSLT来简化/转换HTML,使其更容易处理.
我遇到的问题是找不到我的桌子.所以我不知道它是否可以使用XSL样式表解析HTML.
顺便说一句,HTML文件具有这种外观(原理图,缺少标签):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html id="ctl00_htmlDocumento" xmlns="http://www.w3.org/1999/xhtml" lang="es-ES" xml:lang="es-ES">
<div> some content </div>
<div class="NON_IMPORTANT"></div>
<div class="IMPORTANT_FATHER>
<div class="IMPORTANT">
<table>
HERE IS THE DATA IM LOOKING FOR
</table>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
根据要求,这是我的xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="tbody">
tbody found, lets process it
<xsl:for-each select="tr">
new tf found, lets process it
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
完整的HTML非常大,所以我不知道如何在这里展示它...我已经在Oxygen上测试了有效的文档,它说它有效.
提前致谢.Gonso
iphone ×6
objective-c ×3
autorelease ×1
bigdecimal ×1
core-data ×1
distance ×1
division ×1
html ×1
inheritance ×1
java ×1
lazy-loading ×1
malloc ×1
mkmapview ×1
modal-dialog ×1
parsing ×1
release ×1
settings ×1
singleton ×1
slideshow ×1
sql-server ×1
static ×1
three20 ×1
xslt ×1
zipcode ×1