我想按顺序呈现多个模态视图(例如,从图像选择器中选择图片后显示确认页面).我的问题是解雇动画并在后续步骤中无延迟地呈现总是会使应用程序崩溃EXC_BAD_ACCESS.
我假设问题是CoreAnimation不区分两个转换并且无法正确检测第一个转换是否已经结束.
到目前为止,我的工作是引入1段延迟,这似乎解决了这个问题.但是,我认为这会使代码有点脆弱.还有另一种解决方法吗?
这是UIKit中的错误吗?我应该提交错误报告吗?
示例代码
这是一个重现崩溃的简单案例:
使用以下类创建一个新的基于视图的项目作为主控制器的实现
显示图像选择器视图时点击"取消"
预期的行为:由于随后的调用,选择器视图被解除并再次显示viewDidAppear.
实际行为:它与下面显示的堆栈跟踪崩溃.
码:
#import "SampleViewController.h"
@implementation SampleViewController
- (void)showModal {
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
[self presentModalViewController:picker animated:YES];
// [picker release];
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self showModal]; // this line crashes the app
// the following works as desired
// [self performSelector:@selector(showModal) withObject:nil afterDelay:1];
}
@end
Run Code Online (Sandbox Code Playgroud)
崩溃堆栈跟踪:
#0 0x30b43212 in -[UIWindowController transitionViewDidComplete:fromView:toView:] #1 0x3095828e in -[UITransitionView notifyDidCompleteTransition:] #2 0x3091af0d in -[UIViewAnimationState sendDelegateAnimationDidStop:finished:] #3 …
我有一个访问数据库的DLL,并从存储在配置文件中的应用程序设置中读取连接字符串.然后,引用此DLL的应用程序需要在其配置文件中设置此配置设置的值.
我遇到的问题是生成的配置代码会自动使用我的dev连接字符串作为默认值DefaultSettingValueAttribute.然后,当一个应用程序引用我的DLL时,它无需在自己的配置文件中创建一个条目,因为它使用的是默认值.在开发连接字符串不再有效的部署时间之前,未捕获此错误.
有没有办法使用设计器进行应用程序设置,但关闭创建,DefaultSettingValueAttribute以便没有默认值,应用程序被迫在配置中提供值?
在过去的几年中,Google工具栏的自动填充功能一直是我的Web开发存在的祸根.我一直决定尝试创建一个计时器控件来检查更改,因为开发人员很难在控件上触发更改事件.当控件埋在嵌套中继器中时,这变得越来越复杂,然后尝试将其绑定到UpdatePanel是一个进一步的复杂问题.
有没有人能够成功阻止Google工具栏填写表单字段而无需将字段重命名为无关紧要的内容?(注意:这不适用于'State'下拉列表,甚至可以检查字段值).
为了像谷歌员工一样聪明,这是一次盛大的愚蠢疏忽.
更新:对于那些可能来这里寻找解决方案的人.到目前为止我发现的工作是你有ASP.net,是使用服务器控件"Timer"并将此控件设置为UpdatePanel的触发器.它有助于循环并检查更改的值.
如果您只能访问javascript,或者正在使用其他框架,那么我发现使用以下函数可以发挥最佳效果(我正在尝试监视状态和zip更改.focusElement是必需的,因为当将鼠标悬停在下拉列表中时,它会更改的selectedIndex):
function MonitorChanges(sStateDropdownID, sZipCodeID, sHiddenStateFieldId, sHiddenZipFieldId, bDoPostback) {
var state = $('#' + sStateDropdownID).val();
var zip = $('#' + sZipCodeID).val();
var hiddenstate = $('#' + sHiddenStateFieldId).val();
var hiddenzip = $('#' + sHiddenZipFieldId).val();
$('#' + sHiddenStateFieldId).val(state);
$('#' + sHiddenZipFieldId).val(zip);
var compareString = state + zip;
var compareHiddenString = hiddenstate + hiddenzip;
var focusElement = getElementWithFocus();
if (compareString != compareHiddenString && isShippingZip(zip)) {
bDoPostback = true
}
if (parseInt(focusElement.id.search('drpState')) == -1 && parseInt(focusElement.id.search('txtZip')) == -1 && bDoPostback) …Run Code Online (Sandbox Code Playgroud) 我正在编写一个应用程序,我可以通过多个步骤提供任务.我有一些类似于下面的代码,我想知道这是否是处理异常的常规方法.这个代码可能永远不会被其他任何人看到,但它可能是,所以我想知道我正在按照任何人的预期处理异常.
IEnumerable<Task> Tasks;
foreach(var task in Tasks)
{
try
{
//boiler plate prep for task (loading libraries, connecting, logging start, etc)
foreach(var step in task.Steps)
{
try
{
step.Execute();
}
catch(Exception ex)
{
LogStepError(step, ex);
throw;
}
}
//Notify parties task has been completed successfully, log task completion
}
catch(Exception ex)
{
LogTaskFailure(task);
}
finally
{
//close connections, etc
}
}
interface ITaskStep
{
void Execute()
{
}
}
Run Code Online (Sandbox Code Playgroud)
我还想补充一点,任务步骤正在实现ITaskStep接口,因此Execute的实现不是我自己的(在这个例子中,有人可以实现接口).我的代码只是加载库并运行任何ITasks及其ITaskSteps.
我正在调试在Eclipse 3.4.1中运行的服务器进程.大约有20个线程,睡觉后以不同的间隔醒来.
我在一个线程上的一个方法中设置了断点,Eclipse在那里正确停止.在Debug视图中使用堆栈跟踪扩展线程,我可以使用各种按钮逐步执行.这就是我所期待的.
我的问题是,当我单步执行时,似乎另一个正在运行的线程被唤醒时,它会在Debug视图中窃取焦点.我的暂停线程不再被选中或扩展(它旁边有一个+)并且所有按钮都被禁用.我必须单击挂起的线程继续调试.
有没有人见过这个,知道我可以改变的任何变通办法或设置?
如果我需要从家庭计算机上工作或其他任何方式访问我的文件,我是否需要有一个网络服务器并在那里签入文件?
如果我正在使用git,我是否还需要一台服务器,或者我实际上是在他们的服务器上保存文件?
我有一个数据集的行列表,我需要迭代.
问题是迭代中的处理可能会从列表中删除一行或多行.
由于列表正在被修改,我不能使用foreach()循环.
但是因为有可能某些删除可能发生在我正在处理的元素之前,我也不能使用for()循环(即,如果我正在处理元素,那导致元素的删除还有其他元素,我想不出一种方法来调整我以正确指向我正在处理的元素之后的元素.
你会如何解决这个问题?我目前认为总是处理列表中的第一个元素.如果它被删除,则处理新的第一个元素.如果它没有被删除,则将其移至"alreadyProcessed"列表,并处理新的第一个元素.
有没有更简单的方法?
我读到富有的hickey说的地方:
"我认为在理论上延续可能是整洁的,但在实践中并非如此"
我不熟悉clojure.
1. clojure有继续吗?
如果不是,你不需要继续吗?我见过很多很好的例子,尤其是这个人.有什么选择?
3.如果是,是否有文件?
我正在尝试从我的网站执行HTTP GET到另一个通过iframe引入的网站.
在Firefox上,你可以在源代码中看到iframe src中的正确url及其正确的参数 - 并且它可以工作.
在IE上,您可以在源代码中看到iframe src中的正确url及其正确的参数 - 并且它不起作用...
有没有关于IE的东西不允许你通过查询字符串中的iframe传递参数?
我已经尝试在IE中刷新iframe,我尝试刷新我的页面和IE中的iframe,我已经尝试复制网址并将其重新粘贴到iframe src中(强制刷新就像我刚刚输入的那样)它进入iframe窗口的地址栏).仍然没有运气!
任何人都知道为什么会这样,或者有任何建议试图解决这个问题?
编辑:我无法提供此链接,因为该网站需要密码和登录凭据到我们的网站和我们的供应商的网站.即使我可以在我们的网站上建立一个测试帐户,但它对测试过程没有任何好处,因为我不能对供应商网站做同样的事情.至于代码,它所做的只是从页面加载的后端代码创建src并从后端设置src属性...
//Backend code to set src
mainIframe.Attributes["src"] = srcWeJustCreated;
//Front end iframe code
<iframe id="mainIframe" runat="server" />
Run Code Online (Sandbox Code Playgroud)
编辑: 问题从未解决过.回答自动接受,因为赏金已过期.当我们的网站更接近上线时,我将重新询问此问题,并提供更多信息和页面链接.
谢谢,
马特
我想开发像雅虎这样的网站网络聊天应用程序.唯一的区别是我想让它基于网络而不是桌面.我将使用ajax在jsp/php中实现它.我想知道jsp或php是否会更好.两者的优点和缺点是什么.您更喜欢哪两个?为什么?
jsp applicatioon会慢于php吗?我正在考虑使用struts与jsp和ajax.使用struts会降低速度吗?我知道jsp,java和struts但不是php.php比jsp更困难吗?