小编Mar*_*n G的帖子

iOS7 UITextView设置NSLinkAttributeName属性但无法单击

在此输入图像描述

@interface ViewController ()<UITextViewDelegate>


- (void)viewDidLoad
{
    [super viewDidLoad];
    NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"www.google.com"];
    NSDictionary *linkDic = @{ NSLinkAttributeName : [NSURL URLWithString:@"http://www.google.com"] };
    [str setAttributes:linkDic range:[[str string] rangeOfString:@"www.google.com"]];
    _textView.attributedText = str;
}


- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
{
    NSLog(@"=============%@",URL);
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

有什么不对?

uitextview nsattributedstring ios

3
推荐指数
1
解决办法
5552
查看次数

SDL2 CreateRenderer 抛出无效窗口错误

我当前的代码如下:

#include <iostream>
#include "SDL.h"
#include "SDL_image.h"

int main(int argc, char **argv) {
    if (SDL_Init(SDL_INIT_EVERYTHING != 0)) {
        std::cout << "SDL_Init() Error: " << SDL_GetError() << std::endl;
        std::cin.get();
        return 1;
    }

    SDL_Window *win = SDL_CreateWindow("RandomSDL2", 100, 100, 1280, 720, SDL_WINDOW_SHOWN);
    if (win = nullptr) {
        std::cout << "SDL_CreateWindow() Error: " << SDL_GetError() << std::endl;
        std::cin.get();
        return 1;
    }

    SDL_Renderer *ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
    if (ren == nullptr) {
        std::cout << "SDL_CreateRenderer() Error: " << SDL_GetError() << std::endl; …
Run Code Online (Sandbox Code Playgroud)

c++ sdl sdl-2

3
推荐指数
1
解决办法
1836
查看次数

变量是否只能在if语句的范围内定义,类似于for循环的常规方式?

有没有办法在if构造中声明,赋值和比较变量到表达式,使得它只在if构造的范围内定义?

这是有效的(声明和赋值,但当然条件只是函数f的返回值等于或等于零):

int main()
{
  if(int i = f())
  {
    printf("%d", i);
    // i is defined here!
  }
  else
  {
    // Here too!
  }
  // But not here!
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将i的值与实际表达式进行比较时,我遇到了麻烦:

int main()
{
  // Does not compile because "int i = f()" is not a primary expression?
  if((int i = f()) == 3)
  {
    printf("%d", i);
  }
}
Run Code Online (Sandbox Code Playgroud)

从行为的角度来看,如果构造类型可以创建整个范围,但在我看来它看起来很难看:

int main()
{
  {
    int i = f();
    if(i == 3)
    {
      printf("%d", i);
      // i is defined here!
    }
    // …
Run Code Online (Sandbox Code Playgroud)

c++ scope if-statement declaration

3
推荐指数
1
解决办法
157
查看次数

无法使用( - >)r monad使用SDL2渲染

我有一个小的工作SDL2示例(C++教程的简单端口),我正在尝试使用( - >)r monad重构渲染代码.这是没有重构的样本的工作部分

renderClear renderer
renderCopy renderer texture nullPtr nullPtr
renderPresent renderer
Run Code Online (Sandbox Code Playgroud)

制作和运行 - 纹理就在那里.都

renderClear renderer
flip ($) renderer $ do
    copy texture nullPtr nullPtr
renderPresent renderer
Run Code Online (Sandbox Code Playgroud)

renderClear renderer
renderCopy renderer texture nullPtr nullPtr
flip ($) renderer $ do
    present
Run Code Online (Sandbox Code Playgroud)

工作也很好.然而

renderClear renderer
flip ($) renderer $ do
    copy texture nullPtr nullPtr
    present
Run Code Online (Sandbox Code Playgroud)

只是绘制黑色窗口就是这样.present是的别名renderPresentcopyrenderCopy与第一个参数转移到结束.这与使用IO的这些功能有关吗?我怎样才能解决这个问题?

io monads haskell sdl sdl-2

3
推荐指数
1
解决办法
67
查看次数

为什么格式字符串中%p和%x的格式不同?

打印十六进制值(%x)和地址(%p)时,格式略有不同.0x在十六进制值的情况下,打印值不会以:

int main()
{
     int x = 0x1234;
     printf("Value of x: %x\n", x);
     printf("Address of x: %p\n", (void*)&x);
}
Run Code Online (Sandbox Code Playgroud)

收益率(gcc):

Value of x: 1234
Address of x: 0xffb0fbfc
Run Code Online (Sandbox Code Playgroud)

为什么0x在地址的情况下强迫你呢?

我想它归结为标准.

0x如果没有我想要的话,打印地址的正确方法是什么?这%p不仅是%x一个附加的0x权利吗?

c printf format-string

3
推荐指数
2
解决办法
2948
查看次数

对于std :: string使用operator []是否安全

我正在与旧的C风格界面作斗争.我有一个像这样的签名功能:

 /// if return_value == NULL only the length is returned
 void f( char * return_value, size_t * size_only_known_at_runtime); 
Run Code Online (Sandbox Code Playgroud)

我的问题是,以下代码是否安全?

std::size required;
f( NULL, &required );
std::string s;
s.resize(required);
f( &s[0], &required );
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法将数据输入字符串?

c++ language-lawyer

3
推荐指数
1
解决办法
132
查看次数

如何返回 gmock 中的参数之一

我认为这听起来很简单,但我似乎无法弄清楚如何去做..我正在使用这个模拟功能模拟一个 linux 套接字接口:

MOCK_CONST_METHOD4(send, int(int socketDescriptor, const void* buffer, size_t n, int flags));
Run Code Online (Sandbox Code Playgroud)

我想返回用send.

一个想法是这样的:

  uint32_t nBytes = 0;

  EXPECT_CALL(socketMock, send(124, _, _, MSG_NOSIGNAL))
    .WillOnce(DoAll(SaveArg<2>(&nBytes),
                    Return(nBytes)));
Run Code Online (Sandbox Code Playgroud)

但这将始终返回零。

我应该怎么做Return(Arg<2>)

c++ unit-testing gmock

3
推荐指数
1
解决办法
5206
查看次数

抛弃方法的常数

作为我之前的问题的后续(通过const&写入类成员),是否也很好地定义并正确抛弃类成员方法的常量?

class A
{
public:
    A()
    : a(5)
    {
    }

    int run() const
    {
        std::cout << "a: " << a << std::endl;
        int& x = (int&)a;
        x = 17;
        std::cout << "a: " << a << std::endl;
        return 0;
    }

private:
    int a;
};

int main()
{
    A program;
    return program.run();
}
Run Code Online (Sandbox Code Playgroud)

输出(在cpp.sh上用c ++ 14测试-O0,-Wall,-Wextra和-Wpedantic):

a: 5
a: 17
Run Code Online (Sandbox Code Playgroud)

如果没有,我会参考哪个标准来解释?

c++ const const-cast undefined-behavior

3
推荐指数
1
解决办法
144
查看次数

protobuf 映射字段中元素的顺序

我在协议缓冲区消息中定义了许多映射字段。这些消息用 C++ 填充,并在不同的 C++ 组件中接收,该组件使用DescriptorReflectionAPI 读取消息内容。

给定一个地图字段,说:

map <int32, int32> my_map = 1;
Run Code Online (Sandbox Code Playgroud)

它的传输方式与以下内容相同:

message my_map_entry {
  int32 key = 1;
  int32 value = 2;
}
repeated my_map_entry my_map = 1;
Run Code Online (Sandbox Code Playgroud)

Descriptor由于我已经了解和API的当前限制Reflection,因此这里我必须通过迭代接收到的数据来执行查找。当然,我可以将所有数据放入一些更合适的数据结构中,例如,std::unordered_map如果我想在接收到的地图字段中进行多次查找,但我通常只对每个接收到的地图字段进行一次查找。

我可以假设一些有关数据接收顺序的信息吗?由于协议缓冲区实现中使用的底层数据结构,重复的 my_map_entry 消息是否可能是有序的?如果是这样,则当找到更大的键时,可以停止在映射中查找整数键。当我在应用程序中处理接收到的地图字段时,这可以给我带来潜在的优化。

c++ protocol-buffers

3
推荐指数
1
解决办法
5189
查看次数

在第一个程序启动时注册COM对象

我有一个带有自动化对象的Delphi应用程序.在程序开始时,我想在注册表中自动注册COM对象(而不是使用/ regserver开关).

该程序的旧版本是用Delphi 7编写的,我想我记得这个版本在程序启动后注册了.但是现在它是用D2009编译的,现在它没有注册.也许有人对此有所了解?

非常感谢你!

delphi com

2
推荐指数
2
解决办法
4140
查看次数