我应该在什么情况下使用此功能?
它到底有多成熟?
优缺点都有什么?
它解决了什么问题?
它是否特定于MonoTouch,Mono GC或ObjC中的引用计数?

我最近注意到,有时我们的应用程序在收到内存警告后立即崩溃.在设备上重现这个问题非常困难,甚至在模拟器中我也可能在"模拟内存警告"的十次尝试中遇到这种情况.
调试内存警告处理程序的好策略是什么,考虑问题通常来自"太迟"的回调,在警告处理程序中被销毁后意外使用的资源等等?
通过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的子视图中.我们必须清除它们吗?我糊涂了.
我有一个类型序列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) 我最近为React组件实现了实时编辑,因此您可以编辑它们的标记和代码,并在浏览器中显示更改而无需重新加载或抛弃状态:
它适用于Webpack 热模块替换(对于每个模块都像LiveReload),它可以修补组件的原型并强制重新渲染,React可以优雅地执行,只更新已更改的部分.
根据我的理解,只有在UI框架具有以下特征时才能进行实时编辑JS:
除了React之外,是否有任何满足这些要求的JS框架?
在多大程度上可以为Angular,Meteor,Mithril等实现代码实时重载?
(依赖于像fb-flo或Light Table这样的浏览器插件或者作为调试器连接到Chrome的Live JS Reload 超出了这个问题的范围.我想知道纯JS解决方案.)
在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)
我已经修改了你的建议@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) 我试图模拟对服务器的调用,并验证测试的代码调用正确的方法.代码结构如下:
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) 根据文档,这应该足以运行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
我有以下向量:
y = [1; 3; 2; 3; 1];
Run Code Online (Sandbox Code Playgroud)
它的所有值都在1和n(在这种情况下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).
我有一个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中修复此问题吗?
c# ×4
ios ×2
xamarin.ios ×2
.net ×1
asynchronous ×1
carousel ×1
flicker ×1
javascript ×1
linq-to-xml ×1
livereload ×1
matlab ×1
matrix ×1
mono ×1
moq ×1
octave ×1
reactjs ×1
safari ×1
translate3d ×1
unit-testing ×1
webkit ×1
xamarin ×1
xpath ×1