我想尝试一下Clang的一些新功能,我被提到了Clang TOT.
现在这可能是一个显而易见的问题Clang TOT.
TOT必须是我不熟悉的一些首字母缩略词.
任何人都可以开导我吗?
如果一直在寻找网络,似乎找不到任何好的解决方案,允许您的用户从您的iPhone应用程序提交错误报告.
你如何处理崩溃和异常?
有人有这方面的经验吗?
更新
我知道如何使用静态分析,泄漏检测,用户测试等准备软件测试.
但是当用户(误)使用我的软件时,仍可能发生错误.始终假设您的用户试图破坏您的软件.
我想弄清楚的是,当错误发生时,我(或者说应用程序)如何为我提供有用的数据.正如他们甚至在高品质产品中所做的那样 - 就像我自己的产品一样.:)
我正在寻找有经验允许使用发送错误报告,堆栈跟踪,日志等的人,看看他们如何处理问题.
我们在不同命名空间中的记录和协议存在一些问题.
我们在命名空间foo.proto中有一个协议.
(ns foo.proto)
(defprotocol Proto
(do-stuff [this x y]))
Run Code Online (Sandbox Code Playgroud)
我在命名空间foo.record中有一个记录RecordA:
(ns foo.record
(:require [foo.proto :as proto]))
(defrecord RecordA [bar])
;; RecordA implements the protocol:
(extend-type RecordA
proto/Proto
(do-stuff [this x y] (* x y (:bar this))))
Run Code Online (Sandbox Code Playgroud)
只要我们在repl中,这样就可以正常工作.现在,如果我们在另一方面制作一个uberjar并运行我们得到的代码:
没有实现方法:: do-stuff of protocol:#'foo.proto/Proto for class
另一方面,如果我们在类型声明中实现协议,如下所示:
(defrecord RecordA [bar]
proto/Proto
(do-stuff [this x y] (* x y (:bar this))))
Run Code Online (Sandbox Code Playgroud)
我们不再得到错误(花了一些时间才弄明白).此外,如果我们将Proto的声明移动到与RecordA相同的ns中,我们也不会得到错误.
我的问题:
在声明中实现以及在extend-type或extend-protocol中有什么区别?
如果我们将记录和协议声明移动到相同的ns中,为什么它会起作用?
谢谢