声明+[NSPredicate predicateWithBlock:]如下:
+ (NSPredicate *)predicateWithBlock:(BOOL (^)(id evaluatedObject, NSDictionary *bindings))block
Run Code Online (Sandbox Code Playgroud)
Apple的块的第二个参数的文档bindings说,它是:
替换变量字典.字典必须包含接收器中所有变量的键值对.
我无法弄清楚为什么需要这个参数 - 我也没看到它被用在任何地方.为什么会这样?
另外,bindings在使用基于块的谓词时,是否需要查看内部-[NSArray filteredArrayUsingPredicate:]?
.mobileprovision文件的结构如下所示:
<!-- small binary data -->
<?xml version="1.0" encoding="UTF-8"?>
<!-- plist data -->
</plist>
<!-- large binary data -->
Run Code Online (Sandbox Code Playgroud)
我有几个问题:
具体来说,当上面的Q1和Q3都得到回答时,我会将这个问题视为已回答(并同时授予+100奖励).
假设变量A和B在同一个托管对象上下文中保存托管对象的实例.我需要确保它们与持久性存储中的相同"记录"相关联." 核心数据编程指南"中关于" 故障和取消 "的部分说:
核心数据确保在给定的托管对象上下文中 - 持久性存储中的条目仅与一个托管对象相关联.
由此看来,指针比较似乎足以达到我的目的.或者使用isEqual是否有意义:在同一个上下文中比较托管对象?
我想知道什么是NSOutputStream重定向到标准输出的最佳方法.我现在使用的技术是使用输出流写入内存,获取其数据并将其打印到stdout:
NSOutputStream *stream = [[NSOutputStream alloc] initToMemory];
[stream open];
// calls to stream's -write:maxLengh:
NSData *data = [stream propertyForKey:NSStreamDataWrittenToMemoryStreamKey];
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
printf("%s", [string UTF8String]);
[stream close];
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来实现这一目标?具体来说,我不满意这种方法的两件事:
对于写入流的数据需要额外的内存
此流不可重用 - 在我从此流中检索数据后[stream propertyForKey:NSStreamDataWrittenToMemoryStreamKey],流不会"重置",即我希望后续调用此方法只给我新数据,但事实并非如此.这意味着每次写入stdout后我都必须创建一个新的NSOutputStream.
我在Xcode控制台(通过NSLog(@"%@", error);)中打印了一个NSError对象,对于某种错误,这就是我得到的:
Domain=NSCocoaErrorDomain Code=133020 "The operation couldn’t be completed. (Cocoa error 133020.)" UserInfo=0xe939170 {conflictList=(
"NSMergeConflict (0xe93cad0) for NSManagedObject (0x5dba970) with objectID '0x5dc26f0 <x-coredata://775D53AE-58A4-4B18-BA52-D46781A183AE/SomeObject/p1>' with oldVersion = 2 and newVersion = 3 and old object snapshot = {\n creationDate = \"2011-08-24 06:52:22 +0000\";\n prop1 = \"a65e349a-b315-488e-b7f8-e459e353fd6e\";\n username = \"test-user\";\n password = \"foobar\";\n} and new cached row = {\n creationDate = \"2011-08-24 06:52:22 +0000\";\n prop1 = \"a65e349a-b315-488e-b7f8-e459e353fd6e\";\n username = \"test-user\";\n password = \"foobar\";\n}"
Run Code Online (Sandbox Code Playgroud)
当我用换行符替换所有'\n'和换行符中的所有'\n'时,我得到一个格式很好的错误消息:
Domain=NSCocoaErrorDomain Code=133020 "The operation couldn’t be …Run Code Online (Sandbox Code Playgroud) 乍一看,这似乎是一个简单的问题,但我无法想象如何在某个背景线程上运行匿名块,即我正在寻找相当于的块-performSelector:onThread:withObject:waitUntilDone:.
相关:是否可以将调度队列与某个后台线程相关联,就像主队列与应用程序的主线程相关联一样?
编辑澄清我正在寻找运行匿名块
我注意到OS X和Linux上都有一些意外的行为.打开O_NONBLOCK标准输出的非阻塞I/O(使用)也可以打开标准输入!
这些操作系统是否正常运行?如果是这样,这个行为是否由POSIX定义?如果是这种情况,请指出相关文件.
这是我用来测试这个的示例程序:
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int main (int argc, char *argv[]) {
int flags = fcntl(STDOUT_FILENO, F_GETFL);
if (argc > 1 && strcmp(argv[1], "1") == 0) {
fcntl(STDOUT_FILENO, F_SETFL, flags | O_NONBLOCK);
}
printf("stdout O_NONBLOCK is: %d\n", fcntl(STDOUT_FILENO, F_GETFL) & O_NONBLOCK);
printf("stdin O_NONBLOCK is: %d\n", fcntl(STDIN_FILENO, F_GETFL) & O_NONBLOCK);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在OS X上:
$ clang -o fd-test fd-test.c
$ ./fd-test
stdout O_NONBLOCK is: 0
stdin O_NONBLOCK is: 0
$ ./fd-test …Run Code Online (Sandbox Code Playgroud) 我有一个UItableview,我以编程方式获得了section header&footer.
最初我遇到了在滚动上重叠的sectio标题的问题,我使用scrollViewDidScroll委托解决了
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
heightForHeader = 40.0;
if (scrollView.contentOffset.y<=heightForHeader&&scrollView.contentOffset.y>=0) {
scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);
} else if (scrollView.contentOffset.y>=heightForHeader) {
scrollView.contentInset = UIEdgeInsetsMake(-heightForHeader, 0, 0, 0);
}
}
Run Code Online (Sandbox Code Playgroud)
现在下一个问题是滚动时重叠的部分页脚.
你能帮帮我吗?
我需要压缩通过我的iOS应用程序中的安全通道发送的数据,我想知道是否可以使用TLS压缩.我无法弄清楚Apple的TLS实现Secure Transport是否支持相同的功能.
有没有其他人知道iOS是否支持TLS压缩?
我正在尝试在设备上调试我的应用程序时设置观察点.我无法在gdb或lldb上设置它.
在lldb上,我没有watchpoint set在调试器中看到该选项,即使该页面提到它存在.当我尝试运行时watchpoint set,lldb告诉我该命令无效.
在gdb上,我确实设置了watchpoint(使用watch var),但是当我尝试继续执行时,我得到了这个:
Can't set hardware watchpoints without the 'Z2' (write-watchpoint) packet.
Run Code Online (Sandbox Code Playgroud)
我在gdb窗口中看不到其他输出,也不认为我可以与它进行交互.此应用程序也保持挂起.
我在OS X Lion上使用Xcode 4.3.2(4E2002).我尝试在iOS 5.1和iOS 5.0.1的设备上设置观察点,但两者都遇到同样的问题.
我想枚举我的Lisp进程中可用的所有环境变量的列表.我想要C变量返回的相同列表environ.
SBCL和Clozure CL似乎都没有开箱即用.我可以用CFFI做吗?
cocoa ×5
cocoa-touch ×5
objective-c ×5
ios ×4
debugging ×2
macos ×2
xcode ×2
c ×1
ccl ×1
cffi ×1
common-lisp ×1
compression ×1
core-data ×1
gdb ×1
io ×1
ipad ×1
linux ×1
lisp ×1
lldb ×1
nspredicate ×1
plist ×1
posix ×1
sbcl ×1
ssl ×1