小编Dan*_*mov的帖子

我应该何时在MonoTouch构建设置中启用"引用计数扩展"?

我应该在什么情况下使用此功能?
它到底有多成熟?

优缺点都有什么?
它解决了什么问题?

它是否特定于MonoTouch,Mono GC或ObjC中的引用计数?

在此输入图像描述

garbage-collection xamarin.ios ios automatic-ref-counting

5
推荐指数
1
解决办法
543
查看次数

如何测试你的iOS应用程序在内存警告方面是否表现良好?

我最近注意到,有时我们的应用程序在收到内存警告后立即崩溃.在设备上重现这个问题非常困难,甚至在模拟器中我也可能在"模拟内存警告"的十次尝试中遇到这种情况.

调试内存警告处理程序的好策略是什么,考虑问题通常来自"太迟"的回调,在警告处理程序中被销毁后意外使用的资源等等?

didreceivememorywarning ios ios-simulator

5
推荐指数
1
解决办法
497
查看次数

如何修复由lambda事件处理程序引起的GC循环?

通过Mark Probst和Rodrigo Kumpera 观察高级内存管理,我学习了新的技术,例如分析Mono GC和使用WeakReference.

然而,我仍然不明白如何从第28分钟"修复"拼图2:

public class CustomButton : UIButton {
    public CustomButton () { }
}

public class Puzzle2Controller : UIViewController
{
    public override void ViewDidLoad ()
    {
        var button = new CustomButton ();
        View.Add (button);
        button.TouchUpInside += (sender, e) =>
            this.RemoveFromParentViewController ();
    }
}
Run Code Online (Sandbox Code Playgroud)

控制器保存一个ref to按钮,该按钮保存一个ref事件处理程序,该处理程序将ref保存到控制器.

打破循环的一种方法是使按钮无效.另一种方法是分离处理程序(但我们必须抛弃使用lamdas).

是否有其他/更优雅/方式来打破这个循环?我们能以某种方式坚持WeakReference到这里吗?

谢谢.

编辑:在这种情况下,按钮甚至不是一个字段.但是还有一个周期,不是吗?它位于Controller的View的子视图中.我们必须清除它们吗?我糊涂了.

c# mono garbage-collection xamarin.ios xamarin

5
推荐指数
1
解决办法
456
查看次数

如何通过在原始序列的值上运行任务来创建Rx序列?

我有一个类型序列IObservable<T>和一个映射T, CancellationToken到a 的函数Task<U>.什么是最简洁的方式来IObservable<U>摆脱他们?

我需要以下语义:

  • 上一个项目的任务完成后,每个任务都会启动
  • 如果任务已被取消或出现故障,则会跳过该任务
  • 严格保留原始序列的顺序

这是我看到的签名:

public static IObservable<U> Select<T, U> (
    this IObservable<T> source,
    Func<T, CancellationToken, Task<U>> selector
);
Run Code Online (Sandbox Code Playgroud)

我还没有写任何代码,但我会除非有人打败我.
在任何情况下,我都不熟悉运营商Window,所以我的解决方案可能不那么优雅.

我需要C#4中的解决方案,但为了比较,也欢迎C#5答案.


如果你很好奇,下面是我的真实场景,或多或少:

Dropbox.GetImagesRecursively ()
    .ObserveOn (SynchronizationContext.Current)
    .Select (DownloadImage)
    .Subscribe (AddImageToFilePicker);
Run Code Online (Sandbox Code Playgroud)

.net c# asynchronous task-parallel-library system.reactive

5
推荐指数
1
解决办法
746
查看次数

哪个JS框架除了React允许实时编辑?

我最近为React组件实现了实时编辑,因此您可以编辑它们的标记和代码,并在浏览器中显示更改而无需重新加载或抛弃状态:

它适用于Webpack 热模块替换(对于每个模块都像LiveReload),它可以修补组件的原型并强制重新渲染,React可以优雅地执行,只更新已更改的部分.

根据我的理解,只有在UI框架具有以下特征时才能进行实时编辑JS:

  • 其组件鼓励以可重用组件的形式进行模块化;
  • DOM不会因更新而丢弃;
  • 视图具有确定性生命周期,可以要求重新渲染.

除了React之外,是否有任何满足这些要求的JS框架?
在多大程度上可以为Angular,Meteor,Mithril等实现代码实时重载?

(依赖于像fb-flo或Light Table这样的浏览器插件或者作为调试器连接到Chrome的Live JS Reload 超出了这个问题的范围.我想知道纯JS解决方案.)

javascript javascript-framework livereload reactjs

5
推荐指数
1
解决办法
1021
查看次数

XPath到LINQ转换

在C#中使用XML文件,我正在尝试将XPath查询转换为LINQ,我不知道如何实现最后一节:

XPath的:

variable.XPathSelectElements("procedures/menu[@id='value']/procedure[@id]")
Run Code Online (Sandbox Code Playgroud)

LINQ:

from el in variable.Descendants("procedures").Descendants("menu")
where el.Element("id").Value == "value"
Run Code Online (Sandbox Code Playgroud)

我如何实现/ procedure [@id]部分?

我已经修改了你的建议@Jon但我似乎在这里做了一个我无法解决的简单错误.

XDocument doc = XDocument.Load("procedures.xml");
var query = doc.Elements("procedures")
               .Elements("menu")
               .Where(x => (string) x.Attribute("id") == "value")
               .Elements("procedure").Where(x => x.Attribute("id") != null);

public List<string> commands = new List<string>();
foreach (XElement procedure in query) {
    commands.Add(procedure.Attribute("id"));
}
Run Code Online (Sandbox Code Playgroud)

c# xpath linq-to-xml

4
推荐指数
1
解决办法
1428
查看次数

具有动作/函数参数的接口的Moq设置

我试图模拟对服务器的调用,并验证测试的代码调用正确的方法.代码结构如下:

public interface IServerAdapter
{
    void CallServer(Action<IServerExposingToClient> methodToCall, out bool serverCalled);
    object CallServer(Func<IServerExposingToClient, object> methodToCall, out bool serverCalled);
}

public interface IServerExposingToClient
{
    Resource GetResource(string id);
    void AddResource(Resource resource);
}
Run Code Online (Sandbox Code Playgroud)

我正在测试的代码访问服务器上的一个实现IServerAdapter并调用IServerExposingToClient方法.这样做的原因是我们不希望在类中实现每个方法(它们中有很多方法)IServerExposingToClient.由于这是在代理上调用的,因此它在我们的代码中运行良好.

在服务器上调用方法是这样的:

_mainViewModel.ServerAdapter.CallServer(m => m.AddResource(resource), out serverCalled);
Run Code Online (Sandbox Code Playgroud)

现在的问题是测试和嘲笑.我需要断言AddResource在服务器上调用了method().在out serverCalled(问题1),以确保这样的逻辑,因为它应该呼叫者流动电话做了它对服务器.

当我使用以下Moq设置时,我可以断言在服务器上调用了一些方法:

Mock<IServerAdapter> serverAdapterMock = new Mock<IServerAdapter>();
bool serverCalled;
bool someMethodCalled = false;
serverAdapterMock.Setup(c => c.CallServer(It.IsAny<Action<IServerExposingToClient>>(), out serverCalled)).Callback(() => someMethodCalled = true);
// assign serverAdapterMock.Object to some property my code …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing moq

4
推荐指数
1
解决办法
4507
查看次数

Twitter Bootstrap轮播在旧版浏览器上不起作用

根据文档,这应该足以运行Twitter Bootstrap:

<div class="carousel">
  <div class="carousel-inner">
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
  </div>
</div>

$('.carousel').carousel()
Run Code Online (Sandbox Code Playgroud)

我还包括jquery.transitions插件,所以我认为它会在旧浏览器中降级.
不幸的是,幻灯片在Firefox 3.6中完全没有移动.为什么?

cross-browser jquery-plugins carousel css-transitions twitter-bootstrap

4
推荐指数
1
解决办法
2265
查看次数

通过行和列上的谓词生成布尔矩阵

我有以下向量:

y = [1; 3; 2; 3; 1];
Run Code Online (Sandbox Code Playgroud)

它的所有值都在1n(在这种情况下3)之间,并且表示不同的选项.

我想创建一个大小为size(y, 1)x n的矩阵,其行与y值相对应:

1 0 0 % because y(1) = 1
0 0 1 % because y(2) = 3
0 1 0 % because y(3) = 2
0 0 1
1 0 0
Run Code Online (Sandbox Code Playgroud)

一种方法是这样做

Y = zeros(size(y, 1), num_labels);
for i = 1:m
    Y(i, y(i)) = 1;
end
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点,也许在一个表达式?
基本上,我需要的是生成一个带布尔谓词的矩阵(i, j) => j == y(i).

matlab matrix octave

4
推荐指数
2
解决办法
1216
查看次数

转换期间的不透明度变化在Safari中闪烁

我有一个translate3d带有opacity转换的合成div(它有):

#bad {
    background-color: red;
    -webkit-transition: opacity .5s linear;
    -webkit-transform: translate3d(0, 0, 0);
}
Run Code Online (Sandbox Code Playgroud)

如果我opacity在转换过程中更改它,它将在Safari中闪烁.
闪烁大约在三秒内发生一次,类似于白色闪光.

Chrome中没有此类问题.

在这个小提琴中上下滚动,看看我的意思.

问题似乎并不局限于不透明度变化,-webkit-transform而其过渡正在经历具有类似的效果:偶尔元素在过渡的最终状态之一中呈现.

如果我删除,问题就会消失,-webkit-transform但不幸的是,现在不是一个选择.
我可以通过其他方式在Safari中修复此问题吗?

safari webkit flicker css-transitions translate3d

4
推荐指数
1
解决办法
4330
查看次数