我想在困难的情况下实现MVC模式.困难在于我的模型(生成事件的实体)是长寿的,而视图(事件的接收者)是短暂的.我的问题是,通过两者之间的连接,长寿模型使我的短暂视图保持活跃,即它们不能被垃圾收集.
[MODEL] ------- <weak> -------> [VIEW]
|
<strong>
|
v
[CONTROLLER]
Run Code Online (Sandbox Code Playgroud)
解决此问题的方法是将模型中的连接存储在WeakHashMap <View,Controller>中.这实际上让View被垃圾收集,当发生这种情况时,WeakHashMap也会抛出相应的Controller.也就是说,如果Controller没有对视图进行(强)引用 - 它通常会这样做.在这种情况下,视图通过强引用保持活动状态,直到模型超出范围.
[MODEL] ------- <weak> -------> [VIEW]
| ^
<strong> |
| |
v |
[CONTROLLER] ----------- <strong> ---/
Run Code Online (Sandbox Code Playgroud)
是否有另一种方法将侦听器连接到我的模型,这些方法不会让我的视图(和控制器)保持活动状态?
更新:回答mdma的问题:Controller保留对View的引用,因为它需要更新View.这个引用可能很弱,但是我想让Controllers成为View类的匿名内部类,在这种情况下,Controller实例具有对View实例的隐式强引用.
有多种方法可以处理会话超时,例如加载函数上的“元刷新”javascript 等。
我想要一些整洁的东西:超时前 5 分钟,警告用户...
我也在考虑只要浏览器打开就保持会话打开(仍然需要弄清楚如何做到这一点......可能是一些带有刷新的 iframe)。
你如何处理会话超时,你认为我应该往哪个方向发展?
我正在使用受歧视的联合构建表达式树.以下代码:
type IntExpression =
| TrueIsOne of BoolExpression
type BoolExpression =
| LessThan of IntExpression * IntExpression
| And of BoolExpression * BoolExpression
| Or of BoolExpression * BoolExpression
| Bool of bool
Run Code Online (Sandbox Code Playgroud)
抛出错误,因为未定义BoolExpression.交换定义只会导致反向(IntExpression未定义),如您所料.
有没有解决的办法?
我在输入字段上实现了自动完成,但是框没有显示,而firebug返回"this.source不是函数".我在同一页面的其他字段上使用了自动完成功能,没有任何问题.(两个textarea的).
我正在使用以下代码进行调试,如果我从脚本文件或Firebug命令行运行,效果相同.
var fakedata = ['test1','test2','test3','test4','ietsanders'];
$("#omschrijving").autocomplete(fakedata);
Run Code Online (Sandbox Code Playgroud)
运行jquery 1.4.2和jquery ui 1.8.2,两个缩小版本.
有没有人知道自动完成如何在textareas上正常工作但导致输入上的这种故障?
错误和堆栈跟踪:
this.source is not a function
http://facturatie.autodealers.nl/dev/resources/js/jquery-ui-1.8.2.custom.min.js
Line 570
close(Object { name="a"})jquery....min.js (regel 570)
close(Object { name="a"}, Object { name="c"})jquery....min.js (regel 570)
response()
Run Code Online (Sandbox Code Playgroud) 我有一个显示进程内存状态的JFreeChart实例,初始化如下:
m_data = new TimeSeriesCollection();
TimeSeries vmsize = new TimeSeries("VMSize");
TimeSeries resident = new TimeSeries("Resisdent");
TimeSeries shared = new TimeSeries("Shared memory");
TimeSeries code = new TimeSeries("Code");
TimeSeries data = new TimeSeries("Data");
m_data.addSeries(vmsize);
m_data.addSeries(resident);
m_data.addSeries(shared);
m_data.addSeries(code);
m_data.addSeries(data);
JFreeChart chart = ChartFactory.createTimeSeriesChart("Memory usage", "Time", "Size", m_data, true, true, false);
m_chart = new ChartPanel(chart);
Run Code Online (Sandbox Code Playgroud)
稍后我将值添加到TimeSeriesCollection中的每个TimeSeries.我想以某种方式知道 - 当用户点击图表时 - 与该列相关联的时间,或者甚至更好 - 该值的索引是什么.
我查看了JFreeChart和ChartMouseListener类,但我无法弄清楚如何做到这一点(JFreeChart的文档也非常缺乏,我猜他们试图让人们购买他们的开发人员指南).
我如何在以下方法中获取URL?
- (void)connectionDidFinishLoading:(NSURLConnection*)theConnection
Run Code Online (Sandbox Code Playgroud) 这是我的html的一部分
<input type="text" name="age" />
<input type="text" name="poscode" />
<input type="submit" name="submit" value="Next >>" disabled="disabled"/>
Run Code Online (Sandbox Code Playgroud)
这是我的剧本
<script type="text/javascript">
$(function(){
var enable = false;
if($("input[name='age']").val != "")
enable = true;
if($("input[name='poscode']").val != "")
enable = true;
if(enable == true) $("input[name='submit']").attr('disabled', '');
});
</script>
Run Code Online (Sandbox Code Playgroud)
这不起作用,任何想法我做错了什么?
用户填写两个输入的年龄和邮政编码后,提交按钮应该变为活动状态(开始时禁用)
是否可以在Toast中使用按钮?
从理论上讲,是的,因为您可以使用XML中的布局构建自定义Toast,但我尝试在其中放置一个按钮,但无法使其注册单击.有没有人设法做那样的事情?
我有以下代码:
$sql_latest = "SELECT * FROM tbl_latest ORDER BY id DESC LIMIT 0,3 ";
$results_latest = $mysqli->query($sql_latest);
while($row = $results_latest->fetch_object())
{
echo $row->id;
}
Run Code Online (Sandbox Code Playgroud)
如何将结果放入数组中,以便我可以执行类似的操作
echo $ row [1]; echo $ row [2]; echo $ row [2];
似乎Boost的shared_mutex不是递归的..反正这有什么问题吗?(没有重新实现整个东西)