有没有人真的成功地在MSVC上使用Folly(例如fbvector等)类?
我无法找到任何明智的信息,例如,它无法编译因为没有找到folly-config.h,而我在网上找到的唯一的东西是github修订版,它"已被删除,因为它是由Configure自动创建的"和信息什么是这个配置以及如何启动它无处可寻.
如何在OSX High Sierra(10.13.5)上的Xcode(9.4.1)中启用C++ 17?
我有几个iOS应用程序,它们提供了固有的线性组织信息,允许用户通过屏幕控制向前和向后移动数据.我想允许使用键盘底座或配对蓝牙键盘的用户使用箭头键来回移动.由于应用程序是全屏的,因此用户体验非常重要,因为没有显示屏幕键盘作为副作用的风险.
我找不到可以在Apple的文档中执行此操作的API; 但我无法确定我是否使用了正确的搜索字词.
哪些API可以让我实现这一目标?
更新:我已将此作为Apple错误报告网站的增强功能.
Class Child扩展Parent.父实现协议C,它具有可选方法,包括-(void)d.孩子有执行-d; 应该调用[super d]吗?
换句话说,[super d]当且仅当某些内容会响应时,我会编写什么代码来调用?假设我不控制Parent的实现; 它可能随时改变.
这是我想到的所有方法.我目前正在使用4号.
显然是明智的答案1:
[super d]; // Delete this line if a runtime exception occurs when you try it
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为Parent可能会动态实现-d,因此当您测试它而不是在字段中时,它会起作用.或者Parent的实现可能会更改,以便此测试的结果不再正确.
显然是明智的回答2:
if ([super respondsToSelector:_cmd])
[super d];
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为NSObject的-respondsToSelector实现将在Child中找到实现并在所有情况下返回YES.
显然是明智的答案3:
if ([[self superclass] instancesRespondToSelector:_cmd])
[super d];
Run Code Online (Sandbox Code Playgroud)
当且仅当超类知道它总是实现-d时,这是有效的; 如果实例动态确定是否存在此方法,则此方法将不起作用.优于1,因为它将在运行时获取对Parent实现的静态更改.
显然是明智的回答4:
@try
{
[super d];
}
@catch (NSException *exception)
{
NSString *templateReason = [NSString stringWithFormat:
@"-[%@ %@]: unrecognized selector sent to instance %p"
,NSStringFromClass([self superclass])
,NSStringFromSelector(_cmd)
,self];
if (![exception.reason isEqualToString:templateReason])
@throw …Run Code Online (Sandbox Code Playgroud) c++ ×2
arrow-keys ×1
bluetooth ×1
c++17 ×1
folly ×1
ios ×1
keyboard ×1
objective-c ×1
super ×1
visual-c++ ×1
xcode ×1
xcode9.4 ×1