小编Jas*_*ues的帖子

范围锁定如何工作?

我正在学习C++,我发现范围锁的源代码非常简单..它是如何工作的,这是"资源获取是实例化"(RAII)的一个例子?

c++

8
推荐指数
3
解决办法
1万
查看次数

台风:装配和故事板创建的ViewControllers

如何将Typhoon与iOS故事板一起使用,其中视图控制器由系统隐式生成?我是否必须在prepareForSegue方法中做一些特别的事情?

objective-c ios uistoryboardsegue typhoon

8
推荐指数
2
解决办法
3083
查看次数

Doxygen enum没有显示

是否可以为我的一个类头上声明的枚举使用doxygen生成文档?此链接中名为"scope"的属性的枚举未显示为文档类型.

c doxygen objective-c

8
推荐指数
2
解决办法
1163
查看次数

Kotlin命名为closure/lambda的参数语法

我创建了以下功能:

public fun storeImage(image: BufferedImage, toPath: String, 
    onCompletion: (contentURL: URL) -> Unit)
{
    val file = File(this.storageDirectory, toPath)
    log.debug("storing image: ${file.absolutePath}")
    val extension = toPath.extensionOrNull()
    if (!file.exists())
    {
        file.parentFile.mkdirs()
        file.createNewFile()
    }
    ImageIO.write(image, extension!!, FileOutputStream(file.absolutePath))
    onCompletion(URL(contentBaseUrl, toPath))
}
Run Code Online (Sandbox Code Playgroud)

我可以看到我可以这样称呼它:

contentManager.storeImage(image, "1234/Foobar.jpg", onCompletion = {
    println("$it")
})
Run Code Online (Sandbox Code Playgroud)

或者我可以使用尾随闭包语法:

contentManager.storeImage(image, "1234/Foobar.jpg") {
    println("$it")
}
Run Code Online (Sandbox Code Playgroud)

但是如何调用store图像方法并使用命名参数调用onCompletion函数?

编辑/实施例:

我想storeImage使用类似于以下语法的方法调用该方法:

contentManager.storeImage(image, "1234/Foobar.jpg", 
    onCompletion = (bar: URL) : Unit -> {
       //do something with bar
    }
Run Code Online (Sandbox Code Playgroud)

我无法在上述类型的文档中找到正确的语法.

java lambda kotlin

8
推荐指数
1
解决办法
3590
查看次数

NSSet使用谓词返回与给定类匹配的对象

假设我有一个NSSet,它包含id <Shape>类型的对象集合

...其中有CircleShape,SquareShape,HexagonalShape实例(不是真正的协议或类名)..

是否可以使用谓词或另一行代码返回CircleShape的所有实例?

objective-c nsset nspredicate

7
推荐指数
1
解决办法
4536
查看次数

Swift:定义一个与Objective-C块兼容的闭包

我试图声明一个与以下Objective-C块匹配的闭包:

typedef void(^TyphoonDefinitionBlock)(TyphoonDefinition *definition);
Run Code Online (Sandbox Code Playgroud)

像这样:

var config: TyphoonDefinitionBlock = { (definition: TyphoonDefinition) in
    definition.injectProperty("quest", with: nil)
}
Run Code Online (Sandbox Code Playgroud)

...并得到以下错误.(见图).

在此输入图像描述

这样做的正确方法是什么?

objective-c swift

7
推荐指数
1
解决办法
4073
查看次数

Spring Boot @ControllerAdvice异常处理程序没有触发

我设置了以下控制器建议,以返回错误条件的API合同:

@ControllerAdvice
public class ExceptionHandler : ResponseEntityExceptionHandler()
{
    @ExceptionHandler(Throwable::class)
    @ResponseBody
    public fun onException(ex: Throwable): ResponseEntity<ErrorResponse>
    {
        val errorResponse = ErrorResponse(
           response = ResponseHeader(ex.responseCode(), ex.message))
        return ResponseEntity(errorResponse, HttpStatus.UNAUTHORIZED);
    }

}
Run Code Online (Sandbox Code Playgroud)

工作的罚款,然后停止工作.现在所有异常都被路由到BasicErrorController,返回以下格式:

{
  "timestamp" : 1450495303166,
  "status" : 403,
  "error" : "Forbidden",
  "message" : "Access Denied",
  "path" : "/profile/candidates"
}
Run Code Online (Sandbox Code Playgroud)

以上是一个很好的自以为是的起点,但现在它不会让步.

  • 我尝试用一​​个ExceptionHandlerExceptionResolver但是没有用的实例替换错误处理程序.
  • 我已经尝试制作自己的CustomErrorHandler,但这也不合适,因为在HttpServletRequest重新路由到自定义错误控制器时,原始异常不再存在.需要此信息才能向客户端返回适当的响应.

我怎么样:

  • 使SpringBoot 向异常控制器转发异常.
  • 恢复@ControllerAdvice异常处理程序,这样我就可以返回一个合适的响应体和状态代码.

在启动弹簧日志:

main] .m.m.a.ExceptionHandlerExceptionResolver : Detected @ExceptionHandler methods in exceptionHandler
main] .m.m.a.ExceptionHandlerExceptionResolver : Detected @ExceptionHandler methods in …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc kotlin spring-boot

7
推荐指数
1
解决办法
3950
查看次数

Spring Boot无法在IntelliJ中运行单个测试

这种情况最近开始发生,但我不确定是什么改变了它.

  • 当我从IntelliJ运行所有测试时,一切都很顺利.gradle构建也很好.
  • 当我进行单个单元测试时,一切都很顺利.
  • 当我运行单个Web集成测试时,它会失败,因为配置类具有所有null属性.

配置类看起来像(Kotlin):

@Component
@ConfigurationProperties(prefix = "api")
public open class ApiConfigImpl : ApiConfig
{ 
Run Code Online (Sandbox Code Playgroud)

测试看起来像:

@RunWith(SpringJUnit4ClassRunner::class)
@ContextConfiguration(classes = arrayOf(ApplicationAssembly::class), loader = SpringApplicationContextLoader::class)
@WebIntegrationTest
open class CandidateProfileControllerTest
{

    @Inject lateinit var profileRepo: CandidateProfileRepository
    //etc a few more deps used to setup test data

    @Test
    open fun getById()
    {
        val greg = CandidateProfile("123", "12312", "Greg", "Jones",   dateOfBirth = Date(), gender = Gender.MALE,
            biography = "ABC", maxMatchableAge = null,   maxMatchableDistance = null)
        profileRepo.save(greg)

        val auth = given().header("content-type", "application/json")
            .body(testCredentials)
            .post("/authorization/social").peek().asString()
        val …
Run Code Online (Sandbox Code Playgroud)

java spring intellij-idea kotlin spring-boot

7
推荐指数
1
解决办法
1587
查看次数

iPhone仿真器和真实设备在消息转发方面的不同行为

我想使用Message Forwarding让任何未实现的getter方法返回0,而不是抛出一个无法识别的选择器异常.喜欢

MyClass *r = [[MyClass alloc] init];
NSNumber *n = (NSNumber *)r;
NSLog(@"%d", [n integerValue]); // output 0
NSLog(@"%f", [n doubleValue]); // output 0.00000
NSLog(@"%@", [n stringValue]); // output (null)
Run Code Online (Sandbox Code Playgroud)

所以我写了这个例子:

#pragma mark -
#pragma mark Application lifecycle

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    NSNumber *n = (NSNumber *)self;
    NSLog(@"%d", [n integerValue]);
    NSLog(@"%f", [n doubleValue]);
    NSLog(@"%@", [n stringValue]);

    return YES;
}

- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector {
    NSMethodSignature *ms = [super methodSignatureForSelector:aSelector];
    if(ms)
        return ms;

    // Q = uint64_t, so it …
Run Code Online (Sandbox Code Playgroud)

objective-c objective-c-runtime ios

6
推荐指数
1
解决办法
391
查看次数

从Objective-C工厂方法创建Swift实例

我有一个TyphoonAssembly的子类,它包含这个工厂方法:

+ (instancetype)assembly;
Run Code Online (Sandbox Code Playgroud)

我试图在测试中使用它如下:

var assembly : ApplicationAssembly! = ApplicationAssembly.assembly()
Run Code Online (Sandbox Code Playgroud)

但得到错误'assembly()不可用'(见图).

从objective-C类方法创建Swift实例的正确方法是什么.

在此输入图像描述

objective-c swift

6
推荐指数
1
解决办法
2902
查看次数