所以,非常简单的问题.忽略过度使用单身模式的含义.我想在Objective-C中找到一个可靠的单例模式.我遇到过这个:
@implementation SomeSingleTonClass
static SomeSingleTonClass* singleInstance;
+ (SomeSingleTonClass*)getInstance
{
static dispatch_once_t dispatchOnceToken;
dispatch_once(&dispatchOnceToken, ^{
singleInstance = [[SomeSingleTonClass alloc] init];
});
return singleInstance;
}
- (void)someMethodOnTheInstance
{
NSLog(@"DO SOMET WORK")
}
@end
Run Code Online (Sandbox Code Playgroud)
我很满意,但它导致了很多这样的事情:
[[SomeSingleTonClass getInstance] someMethodOnTheInstance];
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么这比纯粹的静态类更好.
@implementation SomeStaticClass
static NSString* someStaticStateVariable;
- (id)init
{
//Don't allow init to initialize any memory state
//Perhaps throw an exception to let some other programmer know
//not to do this
return nil;
}
+ (void)someStaticMethod
{
NSLog(@"Do Some Work");
}
Run Code Online (Sandbox Code Playgroud)
所有你真正获得的,是方便的方法调用.基本上你换掉了这个:
[[SomeSingleTonClass getInstance] someMethodOnTheInstance]; …Run Code Online (Sandbox Code Playgroud) 我已经设置Jenkins使用GitHub拉取请求构建器.它工作得很棒!除了一件小事.我的测试套件创建HTML报告(我使用HTML结果海报插件精美地发布了)但我似乎无法更改发布到GitHub的状态消息.我的提交都标记为:

提交的状态会正确更新,但消息部分始终显示"已完成构建.未找到测试结果".
我似乎无法弄清楚如何根据测试套件的状态更改此消息.所以,基本上我得到的唯一反馈是我的shell脚本的退出状态.此脚本执行所有构建,测试和处理结果等.如果通过,这是合理可接受的,但如果发生故障,此消息可能会更有帮助!即使只是知道它是否是构建失败而不是测试套件失败也会很好,所以我可以充分地口头上滥用提出拉取请求的人:).
其他一切都工作得很好,我无法弄清楚看起来像是一个微不足道的变化让我疯狂!有任何想法吗?
在另一个主题中,我开始讨论向量和数组,其中我主要是扮演魔鬼的拥护者,按下按钮.然而,在此过程中,我无意中发现了有我有些纳闷的测试情况下,我想有一个关于它的真正的讨论,在"滥用"我得到了打魔鬼代言人,开始真正的现在不可能讨论这个问题.然而,这个具体的例子让我很感兴趣,我无法令人满意地向自己解释.
讨论是关于Vector vs Arrays的一般性能,忽略了动态元素.例如:显然在向量中不断使用push_back()会降低它的速度.我们假设向量和数组预先填充了数据.我提出的示例,随后由线程中的个人修改,如下所示:
#include <iostream>
#include <vector>
#include <type_traits>
using namespace std;
const int ARRAY_SIZE = 500000000;
// http://stackoverflow.com/a/15975738/500104
template <class T>
class no_init_allocator
{
public:
typedef T value_type;
no_init_allocator() noexcept {}
template <class U>
no_init_allocator(const no_init_allocator<U>&) noexcept {}
T* allocate(std::size_t n)
{return static_cast<T*>(::operator new(n * sizeof(T)));}
void deallocate(T* p, std::size_t) noexcept
{::operator delete(static_cast<void*>(p));}
template <class U>
void construct(U*) noexcept
{
// libstdc++ doesn't know 'is_trivially_default_constructible', still has the old names
static_assert(is_trivially_default_constructible<U>::value,
"This allocator can only be used with …Run Code Online (Sandbox Code Playgroud) 我想使用辅助功能在屏幕上执行滑动。我试过了,但这只能执行一次操作。我知道这是可能的,因为在设备上启用我的服务时,它说该服务可以执行划动,触摸,捏等操作。
Point position=new Point(100,10);
GestureDescription.Builder builder = new GestureDescription.Builder();
Path p = new Path();
p.moveTo(position.x, position.y);
builder.addStroke(new GestureDescription.StrokeDescription(p, 100L, 50L));
GestureDescription gesture = builder.build();
boolean isDispatched = dispatchGesture(gesture,gestureResultCallback,null);
Run Code Online (Sandbox Code Playgroud) iOS 8.x VoiceOver为已禁用的按钮宣布调暗而不是禁用.有没有办法以编程方式让VoiceOver说"禁用"而不是"暗淡"?
我试图通过Accessibility服务在我的屏幕上获取TextView的X和Y位置来查找TextView,这可能吗?我发现的一切都需要您先触摸屏幕.以下是我获取节点信息的方法.
public class MyAccessibilityService extends AccessibilityService {
@TargetApi(16)
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
AccessibilityNodeInfo source = event.getSource();
}
}
Run Code Online (Sandbox Code Playgroud) android ×2
ios ×2
benchmarking ×1
c++ ×1
cocoa ×1
github ×1
github-api ×1
ios8 ×1
jenkins ×1
macos ×1
mobile ×1
objective-c ×1
voiceover ×1