我们试图尽可能地使用Swift结构.我们也在使用RxSwift,它具有关闭的方法.当我们有一个结构创建一个引用self的闭包时,它会创建一个强大的引用循环.
import Foundation
import RxSwift
struct DoesItLeak {
var someState: String = "initial value"
var someVariable: Variable<String> = Variable("some stuff")
let bag = DisposeBag()
mutating func someFoo() {
someVariable.subscribeNext { person in
self.someState = "something"
}
.addDisposableTo(bag)
}
}
Run Code Online (Sandbox Code Playgroud)
我怎么知道这个?如果我创建100,000个DoesItLeak对象并在每个对象上调用someFoo(),我相信我有100,000个具有强引用周期的对象.换句话说,当我摆脱包含这些对象的DoesItLeak数组时,对象会留在内存中.如果我不调用someFoo(),则没有问题.
变量是一个类.所以,我可以通过使用xcode的Instruments的Allocations和Variable <String>中的过滤来看到这个内存问题
如果我尝试使用[弱自我],如下所示,我得到一个编译器错误:
someVariable.subscribeNext { [weak self] person in
Run Code Online (Sandbox Code Playgroud)
编译错误是"弱不能应用于非类型"
在实际/非示例代码中,我们通过self访问方法和变量,这是一个内存问题.
如何在保持DoesItLeak结构的同时解决此内存问题?
谢谢你的帮助.
我们有一个丰富的Web客户端.我们的控制器和服务外观用coffeescript(JavaScript)和jquery编写.过去他们本来就是java.
要从Jenkins/Hudson运行我们的JavaScript jasmine测试,我们使用java的junit和htmlunit来加载一个包含jasmine规范的面向测试的jsp页面.
当Htmlunit试图运行时,由于XML解析器类路径在我们的世界中追踪极具挑战性,它可能会因为尝试getPage()而崩溃.
我们只是希望能够从Jenkins运行我们的JavaScript测试,如果JavaScript测试没有通过,它会报告失败.我们只是使用jsp和htmlunit来运行JavaScript测试.我们可以将JavaScript测试和javascript代码加载到JavaScript引擎中,使用Jenkins作为开始它的东西吗?如果是这样,怎么样?
在grails中,我如何向UrlMappings.groovy(例如:println)添加一些代码,以便我可以弄清楚请求URI是什么以及哪个映射被命中(如果有的话)?
背景:
在这种情况下,有两个服务器根据文件扩展名提供不同的服务.因此,两台服务器需要始终查看文件扩展名以便继续进行错误处理.否则,服务器会混淆,1会提供404页面而不是我们的500页面.
更大的图片涉及到由于类似NullPointerException之类的事件而获得500响应,并通过代码跟踪它以查看正在发生的事情.
我在http://jetlet.blogspot.com/2010/08/grails-exception-handling-with-response.html上添加了以下代码:
"500" (controller: "error", action: "internalError")
Run Code Online (Sandbox Code Playgroud)
在测试中,我故意抛出NullPointerException(NPE).当在URL中输入浏览器的地址栏时,将调用500处理并提供500页.但是,当将表单发布到服务器并且使用NPE故意破坏处理代码时,不会调用"500"处理代码.表单操作中的URL似乎以扩展名结尾.所以,不确定为什么GET(浏览器URL)和POST(表单提交)之间的行为差异.
感谢有关跟踪此问题的见解和想法!
我有一个REST服务,它接受JSON请求.我想验证即将发布的JSON请求值.我该怎么做?
在Spring 3.1.0 RELEASE中,我知道有人想确保他们使用3.1.13新的基于HandlerMethod的支持类列出的最新支持类,用于带注释的控制器处理
旧的是像:AnnotationMethodHandlerAdapter.我想确保我使用最新的如RequestMappingHandlerAdapter.
这是因为我希望它能解决我看到的问题:
java.lang.IllegalStateException:在没有先前模型属性的情况下声明的Errors/BindingResult参数.检查处理程序方法签名!
我的@Controller处理程序方法和相关代码是这样的:
@Autowired FooValidator fooValidator;
@RequestMapping(value="/somepath/foo", method=RequestMethod.POST)
public @ResponseBody Map<String, String> fooBar(
@Valid @RequestBody Map<String, String> specificRequest,
BindingResult results) {
out("fooBar called");
// get vin from JSON (reportRequest)
return null;
}
@InitBinder("specificRequest") // possible to leave off for global behavior
protected void initBinder(WebDataBinder binder){
binder.setValidator(fooValidator);
}
Run Code Online (Sandbox Code Playgroud)
FooValidator 看起来像这样:
@Component
public class FooValidator implements Validator {
public boolean supports(Class<?> clazz) {
out("supports called ");
return Map.class.equals(clazz); …Run Code Online (Sandbox Code Playgroud) 我们设置了左右按钮,供用户快速浏览不同的汽车.如果用户快速点击下一页10次或更多次,我们的页面视图控制器将丢失视图控制器.
这是车辆正确显示的车辆页面(模糊以隐藏不相关的信息).见图:
如果滚动动画打开(true),则在快速点击右箭头6次或更多次后会丢失车辆页面.见图:
码:
private func show(viewController:UIViewController, going direction: UIPageViewControllerNavigationDirection) {
let viewControllers = [viewController]
let isAnimated = true // false always works. However, animation is required.
setViewControllers(viewControllers, direction: direction, animated: isAnimated, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
在调试时以及当页面视图控制器停止显示汽车时,我确保正在设置的视图控制器不是零并且列表(汽车)也是非零的.
我尝试了UIPageViewController的解决方案的变体,如何正确跳转到特定页面而不会弄乱数据源指定的顺序?使用完成块的位置.但是,它没有用.
weak var pvcw: UIPageViewController? = self
setViewControllers(viewControllers, direction: direction, animated: true, completion: {(_ finished: Bool) -> Void in
let pvcs: UIPageViewController? = pvcw
if pvcs == nil {
return
}
DispatchQueue.main.async(execute: {() -> Void in
pvcs?.setViewControllers(viewControllers, direction: direction, animated: …Run Code Online (Sandbox Code Playgroud) 我在coffeescript(http://coffeescript.org/)中讨论了枚举/常量的概念,并在下面提出了以下代码,似乎没问题.对于枚举适合的东西,我怎样才能提高它?谷歌搜索这个尚未显示满意度.
class SomeService
@SomeEnumValue : 400
@SomeOtherValue : 402
someFunc: ->
SomeService.SomeEnumValue
ok = new SomeService()
alert ok.someFunc()
if (ok.someFunc() == SomeService.SomeEnumValue) then alert ' some enum value'
Run Code Online (Sandbox Code Playgroud) 我知道我可以执行以下操作将更改映射到自定义对象的Notes'文本字段到UITextView.
self.notesViewModel.currentNote()
.map { $0.text }
.bindTo(self.notesTextView.rx_text)
Run Code Online (Sandbox Code Playgroud)
如何使用相同的模式进行反向操作?该模式是notesTextView.rx_text,将其映射到当前音符的文本.我知道如何做以下感觉非RxSwift-y:
_ = notesTextView.rx_text.subscribeNext { someText in
self.notesViewModel.currentNote().value.text = someText
}
Run Code Online (Sandbox Code Playgroud)
IOW,似乎我应该能够获取UITextView(aka notesTextView),映射并将更改绑定到当前注释中.当前注释返回一个带有带有文本字符串字段的注释的变量.
如何从Coldfusion获取HTTP标头值?
(ColdFusion版本:6.2 ..)
如何创建RxSwift风格的TableViewController?
我正在尝试创建一个使用RxSwift的简单TableViewController,并且没有任何部分.
我将代码仅限于一个部分并仅使用用户.然而,似乎我仍然坚持使用SectionModel.
//
// TableViewController.swift
// RxExample
//
// Created by carlos on 26/5/15.
// Copyright (c) 2015 Krunoslav Zaher. All rights reserved.
//
// modified by Mike Finney for a StackOverflow question
import UIKit
#if !RX_NO_MODULE
import RxSwift
import RxCocoa
#endif
class TableViewController: ViewController, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
var disposeBag = DisposeBag()
let users = Variable([User]())
let dataSource = RxTableViewSectionedReloadDataSource<SectionModel<String, User>>()
typealias Section = SectionModel<String, User>
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.rightBarButtonItem …Run Code Online (Sandbox Code Playgroud) swift ×4
rx-swift ×3
json ×2
coffeescript ×1
coldfusion ×1
enums ×1
grails ×1
ios ×1
jasmine ×1
java ×1
javascript ×1
jenkins ×1
jquery ×1
memory-leaks ×1
rest ×1
spring-mvc ×1
unit-testing ×1
url-mapping ×1
validation ×1