我想验证各种日期字段是否已正确更新,但我不想乱用预测何时new Date()被调用.如何删除Date构造函数?
import sinon = require('sinon');
import should = require('should');
describe('tests', () => {
var sandbox;
var now = new Date();
beforeEach(() => {
sandbox = sinon.sandbox.create();
});
afterEach(() => {
sandbox.restore();
});
var now = new Date();
it('sets create_date', done => {
sandbox.stub(Date).returns(now); // does not work
Widget.create((err, widget) => {
should.not.exist(err);
should.exist(widget);
widget.create_date.should.eql(now);
done();
});
});
});
Run Code Online (Sandbox Code Playgroud)
如果它是相关的,这些测试在节点应用程序中运行,我们使用TypeScript.
我正在尝试使用以下设置配置Kinesis Analytics应用程序:
接下来,我将使用Hive + JSONSERDE导入S3存储桶的内容,希望每个JSON记录都在自己的生产线上.Firehose输出只会附加所有打破JSONSERDE的JSON记录.
我可以将AWS Lambda数据格式化程序附加到输出流,但这看起来很昂贵.我想要的是使用换行符分割每条记录.
如果我没有使用Google Analytics应用程序,我会将换行符附加到每个Firehose记录中.在应用程序的SQL中没有办法做到这一点似乎很奇怪:
CREATE OR REPLACE STREAM "STREAM_OUT" (
a VARCHAR(4),
b VARCHAR(4),
c VARCHAR(4)
);
CREATE OR REPLACE PUMP "STREAM_PUMP" AS
INSERT INTO "STREAM_OUT"
SELECT STREAM
"a",
"b",
"c"
FROM "SOURCE_SQL_STREAM_001";
Run Code Online (Sandbox Code Playgroud)
是添加Lambda数据格式化程序的最佳答案吗?我真的很想避免这种情况.
我关注着的东西,如定义CGPoint关于如何创建自己的功能提示,但我不知道的目的CG_INLINE.幕后发生了什么?
CG_INLINE CGPoint
CGPointMake(CGFloat x, CGFloat y)
{
CGPoint p; p.x = x; p.y = y; return p;
}
CG_INLINE CGSize
CGSizeMake(CGFloat width, CGFloat height)
{
CGSize size; size.width = width; size.height = height; return size;
}
Run Code Online (Sandbox Code Playgroud) 我知道在Mac应用程序中,可以将.strings文件添加到项目文件夹以添加本地化.
是否有任何方法可以将其他本地化添加到应用程序(iOS或Mac OS),而无需在编译时从资源包中加载它们.比如说,下载一个额外的本地化并将其存储在iOS上的/ Documents中?
我想要做的是设置一堆UIControl对象通过相同的处理程序发送所有事件.该处理程序需要根据UIControlEvents触发的类型确定适当的操作.
- (void)handleEventFromControl:(id)sender withEvent:(UIEvent *)event {
UIControl *control = sender;
NSIndexPath *indexPath = [controlIndexPaths objectForKey:control];
UIControlEvents controlEventType = event.type; //PROBLEM HERE
BOOL fire = NO;
NSNumber *eventCheck = [registeredEventsByToolkitIndex objectAtIndex:indexPath.toolkit];
fire = ([eventCheck integerValue] & controlEventType);
if(!fire) {
eventCheck = [registeredEventsByControlIndex objectAtIndex:indexPath.control];
fire = ([eventCheck integerValue] & controlEventType);
}
if(!fire) {
eventCheck = [registeredEventsByIndexPath objectForKey:indexPath];
fire = ([eventCheck integerValue] & controlEventType);
}
if(fire) {
[self.delegate toolkit:self indexPath:indexPath firedEvent:event];
}
}
Run Code Online (Sandbox Code Playgroud)
尽我所知,event.type这样做不起作用.我想避免使用子类,UIControl因为对于我想要做的事情来说,这是一种严重的过度杀伤.这里剩下的活动部件并不那么重要; 我想要的是在以下设置中使用 …
与Ben Gottlieb提出的问题类似,我有一些不赞成的电话让我烦恼.有没有办法按线抑制警告?例如:
if([[UIApplication sharedApplication]
respondsToSelector:@selector(setStatusBarHidden:withAnimation:)]) {
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
} else {
[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]; //causes deprecation warning
}
Run Code Online (Sandbox Code Playgroud)
我所关心的只是那条线.我不想关闭所有弃用警告.我也不愿意做一些像文件一样抑制特定警告的事情.
在其他一些情况下,即使编译器生成警告,我也希望将特定行标记为正常.我本质上想让我的团队知道问题已经处理完毕,并且一遍又一遍地停止对同一行进行窃听.
出于某种原因,以下代码中的保留/释放行为让我感到困惑.
selectedImage = [UIImage imageNamed:@"icon_72.png"];
[selectedImage release];
Run Code Online (Sandbox Code Playgroud)
这应该打破但不会.为什么?我认为imageNamed自动释放本身意味着这里的释放是多余的,并且应该在自动释放发生时中断.
以下是.h和.m文件中与selectedImage相关的代码段:
@property (nonatomic, readonly) UIImage *selectedImage;
@synthesize delegate, selectedImage, spacerBottom, currentIndex;
Run Code Online (Sandbox Code Playgroud)
其他说明,这确实打破了:
selectedImage = [UIImage imageNamed:@"icon_72.png"];
[selectedImage release];
[selectedImage release];
//objc[55541]: FREED(id): message release sent to freed object=0x59245b0
//Program received signal: “EXC_BAD_INSTRUCTION”.
Run Code Online (Sandbox Code Playgroud)
由于做这样的:
selectedImage = [UIImage imageNamed:@"icon_72.png"];
[selectedImage release];
[selectedImage autorelease];
//objc[55403]: FREED(id): message autorelease sent to freed object=0x59b54c0
//Program received signal: “EXC_BAD_INSTRUCTION”.
Run Code Online (Sandbox Code Playgroud)
所以做了以下内容:
selectedImage = [UIImage imageNamed:@"icon_72.png"];
[selectedImage autorelease]; …Run Code Online (Sandbox Code Playgroud) 我正在开发一款能够在iPad和iPhone上运行的通用应用程序.苹果iPad文档说用来UI_USER_INTERFACE_IDIOM()检查我是在iPad或iPhone上运行,但我们的iPhone是3.1.2并且没有UI_USER_INTERFACE_IDIOM()定义.因此,此代码中断:
//iPhone should not be flipped upside down. iPad can have any
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
return YES; //are we on an iPad?
} else {
return interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown;
}
}
Run Code Online (Sandbox Code Playgroud)
在Apple的SDK兼容性指南中,他们建议执行以下操作以检查函数是否存在:
//iPhone should not be flipped upside down. iPad can have any
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
if(UI_USER_INTERFACE_IDIOM() != NULL &&
UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
return YES; //are we on an iPad?
} else {
return interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown;
}
} …Run Code Online (Sandbox Code Playgroud) iphone function-pointers objective-c backwards-compatibility ipad