我正在尝试创建一个倒计时器,它将倒计时,一个连接到文本字段的IBOutlet,从60秒降低到0.我不确定
A.如何将重复限制为60和
B.如何提前减少倒计时:
- (IBAction)startCountdown:(id)sender
{
NSTimer *countdownTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(advanceTimer:) userInfo:nil repeats:YES];
NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
[runLoop addTimer:countdownTimer forMode:NSDefaultRunLoopMode];
}
- (void)advanceTimer:(NSTimer *)timer
{
[countdown setIntegerValue:59];
}
Run Code Online (Sandbox Code Playgroud) 我在表视图中有一个文本字段单元格,在结束编辑时我需要知道它.我以为我会将我的Controller类设置为文本字段单元的委托,然后使用NSTextField的委托方法textDidEndEditing:,但是意识到文本字段单元似乎没有委托方法?为什么这样,在编辑完成后我能做什么(除了子类化)?
谢谢
啊.Word因其臃肿,错综复杂,不符合标准的非语义HTML而臭名昭着.不幸的是,我有一位教授要求我们按照非常严格的标准生成大纲.我宁愿不用手写,所以我决定做一些对同学有用的东西.我在Mac上使用NeoOffice中的简单编号列表创建了大纲,将其导出为HTML,并编写了相当多的CSS来设置样式.然后,我有人在Word for Windows中创建一个有序列表,将其导出为html,并将其发送给我以检查兼容性.在向下滚动数英里之后,试图压制一个颤抖,我看到了一个问题.Word没有使用<ol>
和<li>
.它使用嵌套<span>
s的山与wazoo类.我讨厌看到我的所有工作都浪费掉,但这个内容是不可能的 - 我必须在文档到文档的基础上进行样式,而不是使用通用样式表.
理想情况下,Word将使用标准标记生成HTML,以便我可以像任何其他列表一样设置样式,但似乎并非如此.我怎样才能使它产生实际使用列表<ul>
和<li>
,而不是<span>
,或至少修改我的代码的东西以某种方式与它创建列表的方式不可思议的方式工作?
我有一个由换行符分隔的单词/短语文件.我需要获取文件并将每个单词/短语读入数组.到目前为止我有这个:
NSFileHandle *wordsFile = [NSFileHandle fileHandleForReadingAtPath:[[NSBundle mainBundle] pathForResource:@"WordList"
ofType:nil]];
NSData *words = [wordsFile readDataToEndOfFile];
[wordsFile closeFile];
[wordsFile release];
Run Code Online (Sandbox Code Playgroud)
但是我不确定这是否正确,如果是的话,从哪里开始.
此外,茶馆的答案
NSString componentsSeparatedByCharactersInSet:NSCharacterSet newlineCharacterSet
效果很好,但只有10.5. 如何为10.4复制此行为?
我将如何实施深层复制Foo
?它包含一个实例Bar
,然后引用它Foo
.
public class Foo {
Bar bar;
Foo () {
bar = new Bar(this);
}
Foo (Foo oldFoo) {
bar = new Bar(oldFoo.bar);
}
public static void main(String[] args) {
Foo foo = new Foo();
Foo newFoo = new Foo(foo);
}
class Bar {
Foo foo;
Bar (Foo foo) {
this.foo = foo;
}
Bar (Bar oldBar) {
foo = newFoo(oldbar.Foo);
}
}
}
Run Code Online (Sandbox Code Playgroud)
就目前而言,此代码会因无限递归而导致堆栈溢出.
此外,这是我可以构建的最简单的例子.实际上,对象图会更大,有多个实例变量本身就是集合.例如,考虑多个Bar
s,多个Foo
s.
编辑:我目前正在实施@ chiastic-security的方法.我为Foo正确地做了吗?我正在使用单独的HashMap来包含对象图的所有部分,以便我可以尽可能地编写深层复制功能.
Foo …
Run Code Online (Sandbox Code Playgroud) 可能重复:
未定义的行为和序列点
重载postfix运算符时,我无法理解操作的顺序.我们来看看下面的两个小例子:
int i = 0;
std::cout << std::endl << "i: " << i;
i = ++i;
std::cout << std::endl << "i: " << i;
i = i++;
std::cout << std::endl << "i: " << i;
MyClass myObject;
std::cout << std::endl << "myObject: " << myObject.getMyValue();
myObject = ++myObject;
std::cout << std::endl << "myObject: " << myObject.getMyValue();
myObject = myObject++;
std::cout << std::endl << "myObject: " << myObject.getMyValue();
Run Code Online (Sandbox Code Playgroud)
出现了两种截然不同的行为.输出如下:
i: 0
i: 1
i: 2
myObject: 0
myObject: 1 …
Run Code Online (Sandbox Code Playgroud) 我有一个包含5个项目的数组,也用作tableview的内容.在笔尖中有一个按钮,可以将数组的内容更改为5个不同的项目.但是,当我单击该按钮时,应用程序崩溃并出现EXC_BAD_ACCESS.我在objc_exception _throw上设置了一个断点,并确认了我的怀疑.糟糕的方法是
- (id)tableView:(NSTableView *)wordsTableView
objectValueForTableColumn:(NSTableColumn *)column
row:(int)rowIndex
{
return [[currentCard words] objectAtIndex:rowIndex];
}
Run Code Online (Sandbox Code Playgroud)
currentCard是GameCard类的一个实例,它的数组,单词,是有问题的数组.在第一次启动时,它工作正常,但如果我尝试更改它,崩溃.
- - - - - 编辑 - - - - -
在AppController的awakeFromNib中:我有这个
currentCard = [[GameCard alloc] init];
Run Code Online (Sandbox Code Playgroud)
在按钮的IBAction中,我有这个:
[currentCard release];
currentCard = [[GameCard alloc] init];
Run Code Online (Sandbox Code Playgroud)
启用僵尸后,当我单击按钮时,我从GDB获取:
2009-06-22 18:55:03.368 25WordsMax [19761:813]*** - [CFArray objectAtIndex:]:发送到解除分配的实例0x14ba00的消息
参考数据源方法.我一直试图追踪内存错误几个小时,但我错过了它.
我很沮丧,我在代码中注释了每个保留和释放(没有自动释放),仍然得到2009-06-22 19:41:58.564 25WordsMax [21765:813]*** - [CFArray objectAtIndex:]:发送到的消息当我按下按钮时取消分配实例0x14c330.
什么是数据源方法?我不是在调用reloadData.如果在我的数据源方法中,我为每行返回@"A Word",一切运行正常.在GDB中,我甚至可以看到我的NSLogs打印出新数组的内容,一切顺利.只有在问题中看到的数据源方法被调用时才会发生任何问题.
我有一个倒数计时器文本字段,显示60作为占位符(灰色).当我启动计时器时,它会变黑并开始倒计时.最后,我使计时器无效并将倒计时文本字段设置回60.当然,它现在是黑色的.如何在不使用NSAttributedString进行黑客攻击的情况下将其恢复为60的占位符文本(意味着它是灰色的)?
我有view0到view25.我不是特别想要一个25个案例的开关,所以有没有办法做这样的事情?
- (void)modifyViewNumber:(int)number
{
[view*number* dosomething];
}
Run Code Online (Sandbox Code Playgroud) 我有一个带有25个myGameTile图块的游戏板,它是NSView的子类.在mouseDown中:我想确定我点击了哪个图块并将ivar设置为代表值.
例如,如果我单击tile 12,则将clickedTile设置为"12"或某个唯一表示该特定实例的值.
我打开任何东西,从整数值12一直到某种内省/反射,虽然内置的功能和优雅比黑客,运行时包装和修改更可取.不过,我知道我可能别无选择,只能依赖这些解决方案,所以请回答这些问题.我想知道我的所有选择.谢谢!
Antescript:我知道有一个先前的SO问题,其标题听起来像是指完全相同的问题.它没有.
无论如何,这个问题是一个有点怪异 - 有很多更好的办法来解决这里的问题,但我很好奇,我怎么能解决我的特殊困境.
假设我有一个使用varargs接受任意数量元素的方法,可能是类型Integer
.如果我有一个任意长度的整数数组,有没有办法让我用一个由所述数组的每个元素组成的逗号分隔的参数列表来调用我的方法?
这是一个简短的,人为的例子:
Integer[] paramList = new Integer {1, 2, 3};
varMethod(paramList[0], paramList[1], paramList[2]);
// varMethod({{for (param : paramList) {param;}}});
public void varMethod(Integer...values) {
for (Integer value : values) {
foo(value);
}
}
Run Code Online (Sandbox Code Playgroud)
这条注释掉的线条暗示了我想做的事情.由于paramList
整数是任意长度,因此varMethod
使用显式请求的每个元素(第2行)调用将不起作用.我想知道的是,是否有一种方法可以从数组元素动态生成逗号分隔的参数列表.
我再次意识到,在这样的例子中,有更好的方法可以解决整个问题,但请注意我已经简化了代码,因此它只与我们在这里讨论的特定问题相关.解决我发布的代码的任何变通办法都不会归结为我正在努力解决的问题,这导致我首先提出这个问题.
cocoa ×7
objective-c ×7
arrays ×2
java ×2
c++ ×1
css ×1
file ×1
html ×1
ms-word ×1
nsview ×1
parameters ×1
reflection ×1