当我开始时,Eclipse说"工作区无法锁定"
"无法启动产品,因为关联的工作区当前正由另一个Eclipse应用程序使用." 或"正在使用或无法创建工作区,选择不同的工作区".
但我知道事实并非如此.
我如何"解锁"它?
我实现了Java 7方式的equals():
@Override
public boolean equals(Object obj)
{
if (this == obj) return true;
if (obj == null) return false;
if (getClass() != obj.getClass()) return false;
MyClass other = (MyClass) obj;
return Objects.equal(myFirstField, other.myFirstField) &&
Objects.equal(mySecondField, other.mySecondField);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法减少代码重复?
我更喜欢类似的东西
@Override
public boolean equals(Object obj)
{
if (Objects.equalsEarlyExit(this, obj)) return Objects.equalstEarlyExitResult(this, obj);
MyClass other = (MyClass) obj;
return Objects.equal(myFirstField, other.myFirstField) &&
Objects.equal(mySecondField, other.mySecondField);
}
Run Code Online (Sandbox Code Playgroud)
或类似的.
我想在用户按下UITextViewiphone 中的对象返回时隐藏键盘.然而,神秘的是,这不适用于UITextView工作UITextField.我无法弄清楚为什么......
这就是我做的:
1)我在XCode4中创建了一个基于视图的应用程序.
2)在.xib中创建UITextView,UITextField和UIButton对象
3)在Outlets中标记两者UITextField并UITextView委托给File的所有者
4)<UITextFieldDelegate>在.h中添加到@interface UIViewController
5)textFieldShouldReturn在.m中添加了功能
以下是代码:
.h文件
@interface keyboardDisappearViewController : UIViewController <UITextFieldDelegate>
{
UITextView *textBoxLarge;
UITextField *textBoxLittle;
}
@property (nonatomic, retain) IBOutlet UITextView *textBoxLarge;
@property (nonatomic, retain) IBOutlet UITextField *textBoxLittle;
- (IBAction)doSomething:(id)sender;
@end
Run Code Online (Sandbox Code Playgroud)
.m文件
- (BOOL) textFieldShouldReturn:(UITextField *)theTextField
{
NSLog(@"textFieldShouldReturn Fired :)");
[textBoxLarge resignFirstResponder];
[textBoxLittle resignFirstResponder];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,在textBoxLittle(UITextField)的情况下,键盘正在消失,但在textBoxLarge(UITextView)的情况下却没有
作为进一步检查我,按钮调用函数doSomething
- (IBAction)doSomething:(id)sender {
[textBoxLarge resignFirstResponder]; …Run Code Online (Sandbox Code Playgroud) 让我们假设我有一个类SomethingDAO,我需要适应一个接口SomethingProvider.
我该怎么称呼适配器类?
看起来有四种选择.
BOOL
布尔
布尔
boolean_t
我应该使用哪一个?
似乎也有两种假的定义.
假
假
我应该使用哪一个?
我正在使用EclEmma进行覆盖率分析.
我的Java代码包含synchronized(MyClass.class){}块.
EclEmma说它只是部分覆盖,虽然我有一个单元测试,其中一个线程获得访问而另一个线程被阻止.
是否有可能使用EclEmma完全覆盖同步?
我可以用某种方式注释代码来告诉EclEmma让这条线完全覆盖吗?
亲切的问候罗杰
代码不断发展,如果没有修剪,它也会衰减,在这方面有点像花园.修剪意味着重构以使其实现其不断发展的目的.
如果我们有良好的单元测试覆盖率,重构会更安全.测试驱动的开发迫使我们在生产代码之前首先编写测试代码.因此,我们无法测试实现,因为没有.这使得重构生产代码变得更加容易.
TDD周期是这样的:编写测试,测试失败,编写生产代码直到测试成功,重构代码.
但是从我所看到的,人们重构生产代码,而不是测试代码.随着测试代码的衰减,生产代码将变得陈旧,然后一切都走下坡路.因此,我认为有必要重构测试代码.
问题在于:如何确保在重构时不破坏测试代码?
(我已经采用了一种方法,https://thecomsci.wordpress.com/2011/12/19/double-dabble/,但我认为可能有更好的方法.)
显然有一本书,http://www.amazon.com/dp/0131495054,我还没有读过.
还有一个关于此的Wiki页面http://c2.com/cgi/wiki?RefactoringTestCode,它没有解决方案.
这是我的尝试:
H文件:
@interface Strings : NSArray
@end
Run Code Online (Sandbox Code Playgroud)
M文件:
@implementation Strings
- (id) init
{
[self initWithObjects:
@"One.",
nil];
return self;
}
@end
Run Code Online (Sandbox Code Playgroud)
我跑的时候得到这个:
'NSInvalidArgumentException',原因:' * - [NSArray initWithObjects:count:]:仅为抽象类定义的方法.定义 - [Strings initWithObjects:count:]!'
这就是我所做的:
H文件:
@interface Strings : NSObject
+ (NSArray*) getStrings;
@end
Run Code Online (Sandbox Code Playgroud)
M文件:
@implementation Strings
+ (NSArray*) getStrings
{
NSArray* strings = [[NSArray alloc] initWithObjects:
@"One.",
nil];
return strings;
}
@end
Run Code Online (Sandbox Code Playgroud) ios ×4
java ×2
objective-c ×2
adapter ×1
admob ×1
boilerplate ×1
concurrency ×1
eclipse ×1
emacs ×1
emma ×1
equals ×1
extend ×1
idfa ×1
iphone ×1
naming ×1
nsarray ×1
refactoring ×1
synchronized ×1
tdd ×1
types ×1
unit-testing ×1
xcode ×1