有许多程序,例如Visual Studio,可以检测外部程序何时修改文件,然后在用户想要选择时重新加载文件.是否有一种相对简单的方法在C++中执行此类操作(不一定必须与平台无关)?
我正在开始为iPhone开发,因此我在网上查看不同的教程以及自己尝试一些不同的东西.目前,我正在努力创建一个倒计时,直到午夜.要获得小时,分钟和秒的数量,我执行以下操作(我在某处找到):
NSDate* now = [NSDate date];
int hour = 23 - [[now dateWithCalendarFormat:nil timeZone:nil] hourOfDay];
int min = 59 - [[now dateWithCalendarFormat:nil timeZone:nil] minuteOfHour];
int sec = 59 - [[now dateWithCalendarFormat:nil timeZone:nil] secondOfMinute];
countdownLabel.text = [NSString stringWithFormat:@"%02d:%02d:%02d", hour, min,sec];
Run Code Online (Sandbox Code Playgroud)
但是,我使用的每个地方-dateWithCalendarFormat:timeZone:都会出现以下错误:
warning: 'NSDate' may not respond to '-dateWithCalendarFormat:timeZone:'
(Messages without a matching method signature will be assumed to return 'id' and accept '...' as arguments.)
warning: no '-hourOfDay' method found
error: invalid operands to binary - (have 'int' and …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个简单的单元测试,它将验证在某种情况下,我的应用程序中的类将通过标准日志记录API记录错误.我无法弄清楚测试这种情况最干净的方法是什么.
我知道鼻子已经通过它的日志插件捕获日志记录输出,但这似乎是作为失败测试的报告和调试帮助.
我能看到的两种方法是:
如果我采用前一种方法,我想知道将模拟出日志模块之前将全局状态重置为最简洁的方法.
期待您的提示和技巧......
说明| 一种Java程序,用于读取文本文件并按字母顺序打印每个唯一单词以及单词在文本中出现的次数.
程序应该声明一个类型的变量Map<String, Integer>来存储单词和相应的出现频率.但是哪种具体类型呢?TreeMap<String, Number>还是HashMap<String, Number>?
输入应转换为小写.
一个单词不包含以下任何字符: \t\t\n]f.,!?:;\"()'
示例输出|
Word Frequency
a 1
and 5
appearances 1
as 1
.
.
.
Run Code Online (Sandbox Code Playgroud)
备注| 我知道,我已经在Perl中看到了大致两行代码的优雅解决方案.但是,我想在Java中看到它.
编辑:哦,是的,使用这些结构之一显示实现是有帮助的(在Java中).
我想创建一个无法从外部访问的实例变量.在objective-c中有可能是这样的吗?我记得Apple有私有变量和类似的东西,但如果人们知道它们,他们就可以使用它们.Apple称之为"私有API",但显然其他人可以访问那些东西,如果他们发现那里有什么.
到目前为止,我认为像这样的东西创建了一个私有实例变量:
@interface MyClass : NSObject {
CGFloat weight;
}
Run Code Online (Sandbox Code Playgroud)
没有@property,没有@synthesize,只是上面的声明.
另外我知道Apple添加了一个_inFrontOfTheirPrivateInstanceVariables,但他们说某些地方他们不喜欢看到其他人这样做,因为他们可能会在执行此操作时覆盖意外隐藏的实例变量.
这里的诀窍是什么?
注意:以下SO问题是相关的,但它们和链接资源似乎都没有完全回答我的问题,特别是在实现对象集合的相等性测试方面.
NSObject提供默认实现-hash(返回实例的地址,如(NSUInteger)self)和-isEqual:(NO除非接收者的地址和参数相同,否则返回).这些方法旨在根据需要进行覆盖,但文档清楚地表明您应该同时提供这两种方法,或者两者都不提供.此外,如果-isEqual:返回YES两个对象,那么-hash这些对象的结果必须相同.如果不是这样,当应该相同的对象(例如两个-compare:返回的字符串实例)NSOrderedSame被添加到Cocoa集合或直接比较时,就会出现问题.
我开发了CHDataStructures.framework,这是一个Objective-C数据结构的开源库.我已经实现了许多集合,目前正在改进和增强其功能.我想要添加的功能之一是能够将集合与另一个集合进行比较.
这些比较不应仅比较内存地址,而应考虑两个集合中存在的对象(包括排序,如果适用).这种方法在Cocoa中具有相当先例,并且通常使用单独的方法,包括以下方法:
-[NSArray isEqualToArray:]-[NSDate isEqualToDate:]-[NSDictionary isEqualToDictionary:]-[NSNumber isEqualToNumber:]-[NSSet isEqualToSet:]-[NSString isEqualToString:]-[NSValue isEqualToValue:]我想使我的自定义集合对于相等性测试具有鲁棒性,因此可以安全地(并且可预测地)将它们添加到其他集合中,并允许其他集合(如NSSet)确定两个集合是否相等/等同/重复.
一个-isEqualTo...:方法本身很有用,但是定义这些方法的类通常也会覆盖-isEqual:调用,[self isEqualTo...:]如果参数与接收者属于同一个类(或者可能是子类),或者[super isEqual:]不是.这意味着类还必须定义-hash,以便为具有相同内容的不同实例返回相同的值.
此外,Apple的文档-hash规定如下:(强调我的)
"如果一个可变对象被添加到使用的散列值,以确定该对象的集合中的位置的集合,由对象的哈希方法返回的值不能而所述对象是所述集合中的变化.因此,任一散列法不能依赖于对象的任何内部状态信息,或者必须确保对象在集合中时对象的内部状态信息不会发生变化.因此,例如,可变字典可以放在哈希表中但是你必须当它在那里时不要改变它.(注意,很难知道给定对象是否在集合中.)"
编辑: 我明白为什么这是必要的并完全同意推理 - 我在这里提到它提供额外的背景,并为了简洁而避开了为什么会这样的主题.
我的所有集合都是可变的,并且散列必须至少考虑一些内容,因此这里唯一的选择是将其视为编程错误来改变存储在另一个集合中的集合.(我的集合都采用NSCopying …
我有一个简单的应用程序UITextView嵌入到UIScrollView.Interface Builder不允许我为间距添加多个换行符; 当我点击返回时,它会将其视为"输入结束",而不是将换行符附加到UITextView.
如何让它接受间距的换行符?
在IB中,Size Inspector中有一个下拉列表,显示"Layout"和"Frame".我知道框架是什么,但在这种情况下我不知道布局是什么.有什么不同?
在C程序中打印单个字符时,我必须在格式字符串中使用"%1s"吗?我可以使用像"%c"这样的东西吗?
我正在学习Objective-C,并且拥有C/C++背景.
在面向对象的C++中,总是需要在定义(实现)它之前声明方法,即使它是在父类中声明的.
在过程式C,IIRC中,只要定义一个函数,只要从同一个编译单元中的其他东西(即同一个文件)调用它就可以远离文件中的某个函数(嗯,提供)你没有在其他地方用"extern"声明它.
现在,在Objective-C中,您似乎只需要在头文件中声明选择器,如果它们将被外部使用,并且您可以在.m文件中组合选择器就好了,并在其中调用它们.m文件.此外,似乎永远不会(重新)定义委托方法或继承的方法.
我是在正确的轨道上吗?什么时候需要在Objective-C中定义一个选择器?
objective-c ×4
cocoa ×2
iphone ×2
api-design ×1
c ×1
c++ ×1
character ×1
declaration ×1
definition ×1
equality ×1
file-io ×1
filesystems ×1
fsevents ×1
hashmap ×1
java ×1
map ×1
mocking ×1
monitoring ×1
newline ×1
nose ×1
nsdate ×1
private ×1
python ×1
treemap ×1
uitextview ×1
unit-testing ×1
visibility ×1