我有一个带有NSTextView控件的 Cocoa 应用程序,该控件将其文本保存在一个NSAttributedString(实际上我相信它是一个NSMutableAttributedString)中。我可以轻松地在该字符串内的不同字符范围内设置和修改不同的文本属性(例如字体、下划线等)。
但是,我想将文本的一部分设置为隐藏(类似于 CSS 属性的效果display: none)。当外部事件发生时(比如单击按钮),我想取消隐藏或隐藏该特定范围的字符。
有没有办法做到这一点NSAttributedString?
我想使用sendto()API通过UDP数据包发送视频和音频数据.我使用getsockopt()获得的发送缓冲区大小是114688,但是,当数据包小于65536而不是114688时,sendto()返回-1.并且错误消息是Message太长.
当我使用setsockopt()将发送缓冲区大小调整为200000时,我使用了getsockopt()并发现发送缓冲区大小不是200000而是262142.所以当我发送大小超过65536的数据包时,我仍然遇到同样的错误.
我对这种情况很困惑.我想知道原因是什么以及如何解决这个问题.
当我使用FFMPEG库发送视频和音频数据包时,没有错误.所以我相信这个问题有一个解决方案,我错过了一些东西.
有没有人可以帮我解决这个问题?我真的不明白是什么原因.
我使用的操作系统是ubuntu 11.04,我在ubuntu 11.10中获得了相同的结果.
这是我用来创建套接字和配置参数的代码:
unsigned char *output_buffer = (unsigned char*)av_malloc(IO_BUFFER_SIZE);
if (NULL == output_buffer) {
printf("Couldn't allocate input buffer.\n");
return NULL;
}
output_context_data_t *context_data = (output_context_data_t *)malloc(sizeof(output_context_data_t));
if (NULL == context_data) {
printf("Could not allocate output context data.\n");
av_free(output_buffer);
return NULL;
}
context_data->socket = socket(AF_INET, SOCK_DGRAM, 0);
if(context_data->socket < 0) {
printf("socket creating fail!\n");
return NULL;
}
context_data->socket_addr->sin_family = AF_INET;
context_data->socket_addr->sin_port = htons(output_port);
ret = inet_pton(AF_INET, output_ip, &(context_data->socket_addr->sin_addr));
if(0 == ret) {
printf("inet_pton fail!\n");
return …Run Code Online (Sandbox Code Playgroud)