当在c ++ STL中编程,或者集中使用"模板化",并且发生一些编译错误时,错误报告通常很长,并且通常会给出太多不需要的信息.我在谈论gcc,我不知道与其他编译器有什么不同,但有时甚至只是一个错字,需要一段时间来捕捉错误清除
<ns::type<ns::type<ns::type, ns::type<...><ns::type<...> > > > >
Run Code Online (Sandbox Code Playgroud)
我正在寻找一些编译器标志,技巧,变通方法或方法(我目前复制过去的错误,并把我所拥有的两行和编译器用来想要和删除变量书签......(有点悲伤的程序,不是 - 如此不常见的ctrl + s表现不佳))可以让这个任务更快或者只是帮助我(甚至只有一些IDE错误语法突出显示......)
我有一个在UITableView中注册的自定义UITableViewCell(.h,.m,.xib).
现在我需要在单元格内部使用自定义UIImage并附加一个手势识别器(我不能使用UIButton).问题是,如果它在运行时我得到一个
Terminating app due to uncaught exception 'NSInternalInconsistencyException',
reason: 'invalid nib registered for identifier (CustomCell) -
nib must contain exactly one top level object which must be a UITableViewCell instance'
Run Code Online (Sandbox Code Playgroud)
如果我删除手势单元格正常工作,我相信这是一个可可虫,我现在将尝试以编程方式实例化它,但我想问题是手势识别器在xib中的TableViewCell的同一层次结构级别上
你知道其他界面构建器的解决方法吗?
我正在使用SnapKit,无法找到更新约束偏移的简洁方法.这是一个简单的加载栏视图,其内部视图(expiredTime)必须根据百分比填充父项(从左到右).
我在awakeFromNib自定义UIView中创建约束
self.expiredTime.snp.makeConstraints { (make) in
make.left.equalTo(self)
make.top.equalTo(self)
make.bottom.equalTo(self)
self.constraintWidth = make.width.equalTo(self).constraint
}
setNeedsUpdateConstraints()
Run Code Online (Sandbox Code Playgroud)
然后每当更新时间,我调用setNeedsUpdateConstraints()将触发默认的updateConstraints(),它已经被apple提示重载:
不起作用:( expiredTime视图始终适合父视图)
override func updateConstraints() {
let offset = self.frame.width * CGFloat(percentage)
self.expiredTime.snp.updateConstraints { (make) in
make.width.equalTo(self).offset(offset).constraint
}
super.updateConstraints()
}
Run Code Online (Sandbox Code Playgroud)
这也行不通:
override func updateConstraints() {
let offset = self.frame.width * CGFloat(percentage)
self.constraintWidth?.update(offset: offset)
super.updateConstraints()
}
Run Code Online (Sandbox Code Playgroud)
重建所有约束工作,但我想避免它
override func updateConstraints() {
self.expiredTime.snp.remakeConstraints() { (make) in
make.left.equalTo(self)
make.top.equalTo(self)
make.bottom.equalTo(self)
self.constraintWidth = make.width.equalTo(self).multipliedBy(self.percentage).constraint
}
super.updateConstraints()
}
Run Code Online (Sandbox Code Playgroud) 我有一个设计问题,实际上并不复杂,但我想找到一种优雅的方法来解决它。我想到了这一点:
问题:我有一个 A 类,它初始化并保留 B 的集合
B 只是一个接口,必须实现(所以我们有类 C、D、E、..)。
在构造函数 A 中接收一堆数据集,并且必须在给定每个数据集的情况下初始化 B 的一些(还有相同或不同类的许多不同实例)。我希望 A 不知道 B 的任何实现。
我有几个可行的解决方案,但我正在考虑一种“构造函数中的委托”。例如:
1. for each dataset, ds
2. for each implementation of B, bi
3. try to instantiate bi(ds)
4. if success (means no exception)
5. keep reference
Run Code Online (Sandbox Code Playgroud)
这是因为我用来检查 bi 是否与初始化完全相同的数据和微积分,并且在性能关键的应用程序中,我希望避免这样做两次或在集合类中这样做。
这真的很好,但显然问题是第 2 行...
...以及对使用异常来处理实际上不是异常的事情的疑问。(第 4 行)
那么应该是一种模式
- 让我评估数据并构建所有内容。
- 避免创建多个“架构类” 对于这样一个简单的任务,我想避免类的爆炸(恕我直言,当夸大以下设计模式java风格原则时,这是典型的)。- 尽可能快。
- ...很优雅:)
如果在Xcode的调试控制台中输入
(lldb) p (float)fabsf(-5.0f)
(float) $22 = 0
(lldb) p (double)fabsf(-5.0f)
(double) $23 = 5
Run Code Online (Sandbox Code Playgroud)
无论参数如何,第一个结果转换为浮动(没有转换,p命令无法识别fabsf返回类型)都是错误的.
但是在库头文件中,返回类型fabs显然是一个浮点数.有人可以解释一下吗?
ios9.2:math.h
...
extern float fabsf(float);
extern double fabs(double);
extern long double fabsl(long double);
...
Run Code Online (Sandbox Code Playgroud)
是否存在一些我不了解的lldb机制或问题,或者实际上是语言实现问题(猜测不是......)?
我不确定我是否理解正确,这里的文档有点混乱,但是在 UITableView 委托的主体中给出了以下代码:
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return true
}
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let action = UITableViewRowAction(style: UITableViewRowAction.Style.normal,
title: "Do Something!") { (_, indexPath) in
self.doSomething()
}
return [action]
}
Run Code Online (Sandbox Code Playgroud)
在点击“做某事!”旁边的向左滑动操作完成后,在模拟器中doSomething()执行对方法的调用。按钮。我不希望调用执行两次。我的配置有问题还是我不明白的目的?UITableViewRowAction
TLDR:我希望只有当出现的按钮被点击时才会触发滑动动作回调。
谢谢你。
ios ×3
c++ ×2
objective-c ×2
swift ×2
uitableview ×2
constraints ×1
constructor ×1
snapkit ×1
stl ×1
swipe ×1
templates ×1