如果我解除模态VC并在不到一定的时间内再次呈现它(或另一个),它就不会出现.我错过了什么吗?
iphone objective-c modalviewcontroller presentmodalviewcontroller
我有一个应用程序,比如ApplicationProvider,它拥有一个提供者和一个接收者.另一个应用程序,比如ApplicationCreator,通过intent在提供程序上创建一个元素.ApplicationProvider获取intent并相应地创建元素.
现在我希望ApplicationCreator成为唯一拥有访问该元素的权限的人.因此,如果另一个应用程序试图访问该元素,则会产生某种错误.
这样做的最佳方法是什么?我提出了两种可能的解决方案,但我不喜欢它们中的任何一种.
1)ApplicationProvider拒绝任何对提供者的直接访问,而是使用接收者获取通过intentForResult发送的意图,因此接收者可以检查调用者,验证是创建该元素的原始调用者并授予访问权限.其他应用程序将被拒绝,因为他们持有不同的uid.由于没有简单的方法来伪造 uid,因此该系统可行.
2)任何应用程序都可以向提供程序发送意图,但在清单中,我指定了创建的单个uris的所有路径级权限.每次有人想要创建新元素时,我都会手动向应用程序发出更新.
=========================================
附加信息:
如果不同的应用程序可以放置不同的元素并且能够保留修改它们创建的元素的权限,并且还授予那些请求所述权限的元素的权限,那将是理想的.
A---> +--------+ A creates content
| pro | <---B B asks permission
A<----| vid | the provider forward permission
A---->| er | A grant permission
| | --->B B is given permission and can access A's stuff
+--------+
Run Code Online (Sandbox Code Playgroud) android broadcastreceiver android-intent android-contentprovider android-permissions
我有一个模型视图演示者黑社会。我想知道测试演示者的常用方法是什么。
我想到的第一件事是实例化演示者并实例化一个真实的视图,然后断言该视图将完成预期的行为。
public void itShouldSayHello() {
View view = new View();
Presenter presenter = new Presenter(view);
presenter.userSaid("hello");
assertTrue(view.getGreeting().equals("hello"));
}
Run Code Online (Sandbox Code Playgroud)
然后我认为该视图没有经过测试,所以我创建了一个假视图。
private String greeting;
public void itShouldSayHello() {
View view = new FakeView();
Presenter presenter = new Presenter(view);
presenter.userSaid("hello");
assertTrue(greeting.equals("hello"));
}
private class FakeView implements View {
@Override
public void displayGreeting(String saluto) {
greeting = saluto;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我认为视图的界面可能会改变。这会使代码更难维护。所以我编写了测试并断言要向视图呈现一些东西。这样,即使界面发生变化,我也必须在测试中更改一行代码。
public void itShouldSayHello() {
View view = mock(View.class);
Presenter presenter = new Presenter(view);
presenter.userSaid("hello");
verify(view).displayGreeting("hello");
}
Run Code Online (Sandbox Code Playgroud)
所以基本上我现在测试的是,我希望演示者收集和处理一些信息,最后将其传递给视图,然后我验证传递的值是否正确。
所以我想我现在没有使用假货,我使用的是模拟,然后我验证模拟是否收到正确的值。
我的另一个问题是模型。但我认为这是不可逾越的。我必须做的是查看演示者的行为是否正确是创建一个大的固定装置。然后通过所有各种组合,看看演示者的行为是否正确。
你如何测试你的主持人?
当豆子是POJO时,Weld说"Foo类型的依赖性不满意"是什么意思,但是,只要我@Dependent
在顶部添加,一切正常?我记得它曾经很好地工作而没有指定范围.我想我弄坏了什么.
规格说:
托管bean由Java类实现,该类称为bean类.如果顶级Java类被任何其他Java EE技术规范(例如JavaServer Faces技术规范)定义为托管bean,或者满足以下所有条件,则它是托管bean.
它不是一个非静态的内部阶级.
它是一个具体的类或注释@Decorator.
它没有使用EJB组件定义注释或在ejb-jar.xml中声明为EJB bean类.
它有一个合适的构造函数.也就是说,以下之一就是这种情况.
该类有一个没有参数的构造函数.
该类声明了一个注释为@Inject的构造函数.
定义托管bean不需要特殊声明(例如注释).
我想安装一个编写器包,但我只想在我的环境中进行开发,我不希望其他开发人员安装它,甚至看到我拥有它.
什么是相当于npm install pack/age
没有--save
在作曲?
我必须这样做:
1:CGRect originalSubviewFrame = subview.frame;
2:view.frame = (CGRect)newFrame;
3:subview.frame = originalSubviewFrame;
Run Code Online (Sandbox Code Playgroud)
我认为说明1和3不应该存在,但如果我不恢复子视图形状,它会因某种原因而改变!?!?我阅读了文档,但目前还不清楚.
我想到的第一种方法是将singleton对象作为属性放在appDelegate对象中.通过这种方式,您可以使用任何地方访问它
#import "myAppDelegate.h"
// ...
[[(myAppDelegate *)[UIApplication sharedApplication] delegate] SingletonObj]
Run Code Online (Sandbox Code Playgroud)
缺点是你必须显式地转换和导入你的委托的标题,告诉你正在使用的类,SingletonObj实际上是委托的属性.我认为这会让代码闻起来有点香味.
第二种方法是创建一个合法的单例类.然而,这需要更多的工作.我个人认为一个Singleton类,绰绰有余.
我不是程序员,所以我非常感谢对我的推理和对这个主题的看法的更正.
既然js.Dynamic.literal() != js.Dynamic.literal(),
建议的方法是测试两个文字的相等性?
我不想用特征来表征那些文字.我想知道他们是否完全平等.
我现在正在做的是以下内容
val js1 = literal()
val js2 = literal()
val json1 = JSON.stringify(js1)
val json2 = JSON.stringify(js2)
assert(json1 == json2) // true
Run Code Online (Sandbox Code Playgroud)
注意:即使在javascript {} === {}
评估为false,所以我不应该首先感到惊讶.
我有这个
list {
1,1
1,2
2,1
}
Run Code Online (Sandbox Code Playgroud)
我想把它变成这个
map {
1 -> (1,2)
2 -> (1)
}
Run Code Online (Sandbox Code Playgroud)
到目前为止我尝试了什么:
val list = List((1,1),(1,2),(2,1))
var map: Map[Int, Seq[Int]] = Map()
for (e <- list) {
if (map contains e._1)
map = map + (e._1 -> (map(e._1) :+ e._2))
else
map = map + (e._1 -> Seq(e._2))
}
Run Code Online (Sandbox Code Playgroud)
不用说,看起来有人在我的代码上洒了牛奶.如何改善这种情况?
我有一个非常简单的代码
val things: Seq[Long] = (1L to 100000000L)
val start: Long = System.nanoTime()
val result = things.sum
val end: Long = System.nanoTime()
println(end-start)
Run Code Online (Sandbox Code Playgroud)
它打印出1790900
大约 2ms 之类的东西。
然而,当我介绍我的案例类时
case class Thing(foo: Long) extends AnyVal
Run Code Online (Sandbox Code Playgroud)
这似乎改变了一切。你不相信我?只是看。我会将我的 long 序列映射到Thing
s 并返回到 long 序列:
val things: Seq[Long] = (1L to 100000000L).map(i => Thing(i)).map(t => t.foo)
val start: Long = System.nanoTime()
val result = things.sum
val end: Long = System.nanoTime()
println(end-start)
Run Code Online (Sandbox Code Playgroud)
现在基准的顺序是1058361600
。
这怎么可能?
什么时候
iphone ×3
objective-c ×3
scala ×3
java ×2
android ×1
architecture ×1
cdi ×1
composer-php ×1
ios ×1
jboss ×1
oop ×1
performance ×1
scala.js ×1
uiscrollview ×1
uiview ×1
unit-testing ×1
utest ×1
weld ×1
wildfly ×1