我有一个使用NSURLConnection打开与服务器的长连接的类.当连接关闭时,无论是在connectionDidFinishLoading:还是connection:didFailWithError:,我想等待15秒然后重试连接.
目前我使用的[self performSelector:@selector(restartConection) withObject:nil afterDelay:15.0];,但是这会导致不希望的情况下,当对象被其创建者释放,performSelector和NSURLConnections永远保持"自我",它永远不会被释放.
如何在不永久保留对象的情况下执行此操作?任何帮助都会非常感激.
谢谢,-Alec
我有一个算法(无法更改),该算法可以输出短语列表。这些短语旨在成为“主题”。但是,其中一些仅靠自己是没有意义的。拿这个清单:
is the fear
freesat
are more likely to
first sight
an hour of
sue apple
depression and
itunes
Run Code Online (Sandbox Code Playgroud)
我该如何过滤掉那些没有意义的短语,留下如下列表?
freesat
first sight
sue apple
itunes
Run Code Online (Sandbox Code Playgroud)
这将适用于多种语言的短语集,但英语为优先。
我一直在尝试在 Linux 上读写文件的性能,特别是 O_DIRECT,我想知道,无论是在硬盘驱动器级别还是在 posix/Linux API 级别,是否可以仅将几个字节写入到扇区,而不破坏该扇区的其余部分,并且不先读取它?
通过callgrind运行我的应用程序显示,这一行使其他所有内容相形见绌大约10,000倍.我可能会围绕它重新设计,但它让我感到疑惑; 有没有更好的方法呢?
这就是我现在正在做的事情:
int i = 1;
while
(
(
(*(buffer++) == 0xffffffff && ++i) ||
(i = 1)
)
&&
i < desiredLength + 1
&&
buffer < bufferEnd
);
Run Code Online (Sandbox Code Playgroud)
它正在寻找32位无符号整数数组中第一块desiredLength 0xffffffff值的偏移量.
它比任何涉及内循环的实现都要快得多.但它仍然太慢了.
我有一个任意基数的整数表示的长度.假设长度为15,基数为36.然后,我想知道所述整数的表示在另一个任意基数中的持续时间.即,转换为基数2可能会导致长度为68.
我知道这是在下面的线条,但我不能完全了解我需要的地板和ceil,我得到的结果有点偏离:
length * log(fromBase) / log(toBase)
Run Code Online (Sandbox Code Playgroud) 我正在使用PHP的preg_replace,并尝试转换字符串
abcd
成
(a(b(c(d))))
这是我得到的最好的:
preg_replace('/.(?=(.*$))/', '$0($1)', 'abcd');
// a(bcd)b(cd)c(d)d()
Run Code Online (Sandbox Code Playgroud)
是否可以使用正则表达式?
编辑我刚刚在PCRE规范中发现了这个:Replacements are not subject to re-matching所以我原来的方法不会起作用.我想保留所有正则表达式,因为在我的实际用例中有一些更复杂的匹配逻辑.
我正在尝试[NSMutableDictionary dictionaryWithObjects:frames forKeys:items]使用 CFDictionary 来实现,这样我就可以控制键和值回调。这就是我所拥有的:
__unsafe_unretained id keys[itemCount];
[items getObjects:keys range:NSMakeRange(0, itemCount)];
__unsafe_unretained id values[itemCount];
[frames getObjects:values range:NSMakeRange(0, itemCount)];
CFDictionaryCreate(kCFAllocatorDefault, (const void **)keys, (const void **)values, itemCount, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
Run Code Online (Sandbox Code Playgroud)
这给出了以下错误:Cast of an indirect pointer to an Objective-C pointer to 'const void **' is disallowed with ARC。
我尝试了各种桥接排列,但我似乎无法毫无抱怨地编译它。
非常感谢任何帮助!
我正在分配一个相当大的,大约100GB的内存块.确切的大小在编译时始终是已知的.
我应该静态分配吗?
static char data[DATA_SIZE];
Run Code Online (Sandbox Code Playgroud)
还是使用mmap?
data = mmap(NULL, DATA_SIZE, PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE|MAP_LOCKED|MAP_UNINITIALIZED, -1, 0)
Run Code Online (Sandbox Code Playgroud)
对于前者,应用程序(忽略启动时间)似乎运行速度略快.
忽略失败的分配,每种方法的优缺点是什么?
当设置UIView的alpha(在iOS上)时,它将每个子视图设置为相同的值,但是在它们各自的超视图之上将它们与该alpha组合.所以子视图与他们的超级视图混合在一起.
我不希望这种情况发生.我希望不透明度作为一个整体应用于UIView,而不是应用于每个单独的视图.我希望获得与CSS3的不透明度相同的效果,或者将不透明度应用于Photoshop中的一组图层,而不是单独应用于每个图层.
然而,复杂性在于,UIView是一个UITableView,其他需要是交互式的.并且将视图置于顶部后面的视图是不可行的.
我的问题是:实现这一目标的最佳方法是什么?
谢谢!
亚历克
我最近遇到过这几次:
if ((flags & PERFORM_DELETION_CONCURRENTLY) == PERFORM_DELETION_CONCURRENTLY)
...
Run Code Online (Sandbox Code Playgroud)
额外比较的原因是什么?为什么不呢?
if (flags & PERFORM_DELETION_CONCURRENTLY)
...
Run Code Online (Sandbox Code Playgroud)
我的猜测是,当编译器更严格的时候,这是一个剩下的习惯,可以在过去的日子里保持警告.
我经常想做这样的事情:
unsigned char urlValid[66] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~";
Run Code Online (Sandbox Code Playgroud)
...要么:
unsigned char listOfChar[4] = "abcd";
Run Code Online (Sandbox Code Playgroud)
...也就是说,从字符串文字中初始化一个字符数组,并忽略该字面值中的空终止符.它非常方便,而且我可以做类似的事情sizeof urlValid并得到正确的答案.
但不幸的是它给出了错误initializer-string for array of chars is too long.
有没有办法:
这总是按预期运行吗?
char *x;
if (...) {
int len = dynamic_function();
char x2[len];
sprintf(x2, "hello %s", ...);
x = x2;
}
printf("%s\n", x);
// prints hello
Run Code Online (Sandbox Code Playgroud)
在C和C++中,编译器(在我的情况下是GCC)如何实现可变大小的数组?