如何正确对齐文本UIPickerView?我试图UILabel为行视图制作自定义s,但由于某种原因,没有任何东西出现,右对齐或其他.这是我写的:
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero];
[label setText:[NSString stringWithFormat:@"row %d", row]];
[label setTextAlignment:UITextAlignmentRight];
return [label autorelease];
}
Run Code Online (Sandbox Code Playgroud)
如果有人想知道,我使用,CGRectZero因为我在UICatalog示例中看到了它.
灵感来自Clojure和Peter Norvig
我一直在努力在obj-c中实现一个简单的Lisp.我有许多基础知识(包括一些类似于Clojure的酷可可集成),并希望继续算术.
关于我到目前为止如何实现这一点的一些背景:我使用的是一个小类"Scope",它只是一个用于本地变量的NSMutableDictionary,带有指向父"Scope"的指针.(AKA,我只能存储物品.)
我使用以下规则解析数字:像2或2.7这样的普通数字被转换为[NSNumber numberWithIneger:]或[NSNumber numberWithDouble:].但是对于可可集成,您还可以执行2i或4U之类的操作来创建具有特定标量类型的NSNumber.(我还创建了一个围绕NSObject的类别,并创建了一个新的方法performSelector:withObjects:,巧妙地将args取消装箱,并且盒子备份返回类型以实际使其有用)
我有一个特殊的形式,看起来像:(static Math add: 1 2 3 4),它会变成一个obj-c方法调用,看起来像:[Math add:args]
鉴于这一切,我向大家提出的问题是:实施"add:"方法的好方法是什么?
我希望做类似的事情我怎么相信Clojure的不(用做什么?)是,通过实施一堆类似的方法add:(int)x to:(long)y,add:(long)x to:(float)y等,等,通过所有可能的组合,并减少在的args列表成对将一切.但是当然,obj-c不支持这样的重写方法.除了限制我自己只添加NSIntegers和双打之外,我能做什么样的诡计才能得到我想要的地方?我真的不在乎它是否超级高效(不过,这总是一个优点!)
有时从肌肉记忆中,git commit -a当我有一些文件或文件的一部分小心地上演并准备好提交时,我会运行,导致我失去我谨慎的分期行动.
git commit -a如果有任何(文件或补丁)目前上演,有没有办法发出警告?
(显然,我应该用-a更少的钱来减轻我的问题,但我的问题仍然存在.)
出于某种原因,我一直在努力解决这个问题.我有15位代表一个数字.这些位必须与模式匹配.模式以比特开始的方式定义:它们处于该模式的最正确表示.所以说模式是1 4 1.这些位将是:
000000010111101
因此,一般规则是,取模式中的每个数字,创建多个位(在这种情况下为1,4或1),然后至少有一个空格将它们分开.所以,如果它是1 2 6 1(它将是随机的):
001011011111101
从刷新版本开始,我想生成满足该模式的每个可能的数字.位数将存储在变量中.因此,对于一个简单的情况,假设它是5位,初始位模式是:00101.我想生成:
00101 01001 01010 10001 10010 10100
我想在Objective-C中做这个,但任何类似C的东西都没问题.我似乎无法为此提出一个很好的递归算法.在上面的例子中它是有道理的,但是当我开始进入12431并且必须跟踪它发生故障的一切时.
在我的iOS应用程序中,我创建了一个视图,用于在绘制时UIBezierPath实时渲染用手指绘制的路径.不幸的是,当路径变长(几百个顶点)时,我遇到性能问题,每次刷新视图时绘制整个路径变得不切实际.
我尝试将路径分成许多不同的段,这使我只能绘制传递给我的矩形中的段,drawRect:这有助于显着,但绘制仍然很慢; 当将节添加到已包含路径部分的屏幕区域中的路径时,会不必要地重绘许多段.
我没有从视图中删除任何东西,所以我试图启用clearsContextBeforeDrawing并且每次drawRect:调用时只绘制最新的段,但似乎有大量的轶事证据在线表明这个属性没有做任何事情我也似乎根本无法使其发挥作用.
加速绘画的最佳方法是什么?
从我所看到的,看起来我最好的选择是绘制到(屏幕外)位图上下文,所以我可以一点一点地添加并将其复制到屏幕上显示的图形上下文,但我也读到这通常是在分配上下文时以及在将图像渲染到屏幕时所需的RGBA到RGB转换时都会减慢.
看起来我可以做一些涉及到的事情CALayer(有或没有屏幕外缓冲区) - 我不清楚如何在一个图层上绘图,以及它是否会绕过我所看到的任何问题.该contents属性接受一个CGImageRef; 我可以做一个CGImage然后更新其增量不重绘一切?另外,是否可以在不重绘整个内容的情况下添加到CALayer的内容中?
任何见解将不胜感激.
编辑:对于赏金,请提供一个示例,说明如何正确初始化图像缓冲区,在其上绘制一个三次贝塞尔曲线路径,并将其适当地复制到屏幕上.另外请记下为什么要使用你的方法 - 我不知道使用CGBitmapContextCreate是否是最好的方法,或者我还应该使用其他东西.
给定一个JavaScript对象,我如何检查它是否是Raphael对象(不是纸张,而是圆形,路径等)?
Raphael.el代表通用元素原型; 我想我想测试一下
x.__proto__ === Raphael.el
Run Code Online (Sandbox Code Playgroud)
以跨浏览器的方式,但我不完全确定.
使用git,我可以使用像这样的命令丢弃错误或意外的提交
git reset --soft HEAD^
Run Code Online (Sandbox Code Playgroud)
它将当前分支(例如master)重置为当前修订版的父提交,HEAD^而不触及工作树 - 如果您想要删除工作树--soft,--hard则可以替换为.
另外,如果我想摆脱多个提交,我可以使用像这样的命令
git reset --hard 53b94d0
Run Code Online (Sandbox Code Playgroud)
这让我完全回到了承诺53b94d0,好像我之后从未做过任何事情.
什么是Mercurial(hg)等价物?
backbone.js源代码使用这样的函数包装器:
(function(){
...
}).call(this);
Run Code Online (Sandbox Code Playgroud)
如http://backbonejs.org/docs/backbone.html#section-185所示.
更常见的是,我已经看到使用以下内容:
(function(){
...
})();
Run Code Online (Sandbox Code Playgroud)
这两者的行为何时不同?我的印象是他们是等价的,但我认为必须有一个区别,因为Backbone使用.call(this)而不是更短的选择.
受SQLite的启发,我正在寻找使用valgrind的"cachegrind"工具来进行可重现的性能基准测试.它输出的数字比我发现的任何其他计时方法稳定得多,但它们仍然不具有确定性.举个例子,这是一个简单的C程序:
int main() {
volatile int x;
while (x < 1000000) {
x++;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我编译它并在cachegrind下运行它,我得到以下结果:
$ gcc -O2 x.c -o x
$ valgrind --tool=cachegrind ./x
==11949== Cachegrind, a cache and branch-prediction profiler
==11949== Copyright (C) 2002-2015, and GNU GPL'd, by Nicholas Nethercote et al.
==11949== Using Valgrind-3.11.0.SVN and LibVEX; rerun with -h for copyright info
==11949== Command: ./x
==11949==
--11949-- warning: L3 cache found, using its data for the LL simulation.
==11949==
==11949== I refs: 11,158,333
==11949== I1 …Run Code Online (Sandbox Code Playgroud) 我在使用新的Lion功能重新排列应用中的行时遇到问题.我outlineView:pasteboardWriterForItem:用来存储行索引,以便我可以在以后验证/接受删除时访问它们.我创建一个新的NSPasteboardItem来返回,并尝试存储行号,如下所示:
[pbItem setData: [NSKeyedArchiver archivedDataWithRootObject: [NSNumber numberWithInteger: [fTableView rowForItem: item]]]
forType: TABLE_VIEW_DATA_TYPE];
Run Code Online (Sandbox Code Playgroud)
TABLE_VIEW_DATA_TYPE是一个自定义字符串,用于区分拖动粘贴板中的自定义数据.我不会在拖动这些行之外使用它.
尝试拖动时,我在控制台中收到: 'TableViewDataType' is not a valid UTI string. Cannot set data for an invalid UTI.
当然我可以使用一些内置的UTI用于粘贴板,但它们都不适用(并且使用它们会导致拖动接受除行之外的拖动,它不应该).是否有一些我缺少的东西,比如一种定义自定义UTI的方法,只是为了拖动(没有使它成为"真正的"UTI,因为我在内部拖动之外没有使用它,因此它不应该是公共的).
谢谢你的帮助!
git ×2
javascript ×2
objective-c ×2
algorithm ×1
benchmarking ×1
bitmap ×1
c ×1
cachegrind ×1
calayer ×1
cocoa ×1
cocoa-touch ×1
drawing ×1
iphone ×1
lisp ×1
macos ×1
math ×1
mercurial ×1
nstableview ×1
performance ×1
raphael ×1
uipickerview ×1
valgrind ×1