小编Pav*_*kin的帖子

尝试将子视图添加到导航栏

我尝试了什么:

UIView *view = [[UIView alloc] initWithFrame:frame];
[view setBackgroundColor:[UIColor redColor]];
[[UINavigationBar appearance] addSubview:view];     // does't work

[self.navController.view addSubview:view];          // does't work
[self.navController.view bringSubviewToFront:view]; // 
Run Code Online (Sandbox Code Playgroud)

问题是我们如何才能在iOS7的导航栏中正确添加子视图?谢谢你的建议.

UPD0:对不起,伙计们.我得到了一部分.那是因为我self.navController.navigationBarHidden = YES追求了setupAppearance.好吧,似乎有一个有趣的导航脸.酒吧实施.将navigationBarHidden在每个视图我们已经定制NAV.酒吧.我应该深入了解一下.无论如何,谢谢你的回复.

UPD1:继续搜索解决方案,为nav添加自定义视图.酒吧喜欢背景图片.

objective-c uinavigationbar uiview ios7

4
推荐指数
1
解决办法
9688
查看次数

GitHub:术语:创建拉取请求与打开拉取请求

创建拉取请求打开拉取请求之间有区别吗?

创建拉取请求的一些短语示例:

  1. 创建拉取请求以提出存储库更改并进行协作。
  2. 您可以在创建拉取请求时指定要将更改合并到哪个分支。
  3. 创建草稿拉取请求,请使用下拉列表并选择创建草稿拉取请求

打开拉取请求的一些短语示例:

  1. 要在公共存储库中打开拉取请求,您必须具有对头或源分支的写访问权限。
  2. 拉取请求只能在两个不同的分支之间打开。
  3. 打开拉取请求后,您可以与协作者讨论和审查潜在的更改。

PS 在我看来,创建拉取请求后,它变成:

  1. 创建。
  2. 它的状态自动变为open

逻辑上的意思是:

  1. 首先必须创建拉取请求。

  2. 然后,拉取请求可以根据需要多次打开(其状态为open)或关闭(其状态为)。closed

结果是,从技术上讲,打开拉取请求并不意味着创建拉取请求

terminology github pull-request

4
推荐指数
1
解决办法
2153
查看次数

为什么不是所有标准头都以 std 前缀开头?

为什么不是所有标准头都以std前缀开头?即为什么complex.h而不是stdcomplex.h

c naming language-lawyer c11 c17

4
推荐指数
1
解决办法
116
查看次数

GCC:为什么无法在 -std=c11 -Wall 下编译干净的 printf("%f\n", f16) ?

示例代码:

#include <stdio.h>
#define __STDC_WANT_IEC_60559_TYPES_EXT__
#include <float.h>

#ifdef FLT16_MAX
_Float16 f16;
int main(void)
{
    printf("%f\n", f16);
    return 0;
}
#endif
Run Code Online (Sandbox Code Playgroud)

调用:

# gcc trunk on linux on x86_64
$ gcc t0.c -std=c11 -Wall
Run Code Online (Sandbox Code Playgroud)

预期诊断:

<nothing>
Run Code Online (Sandbox Code Playgroud)

实际诊断:

t0.c:9:14: warning: format '%f' expects argument of type 'double', but argument 2 has type '_Float16' [-Wformat=]
    9 |     printf("%f\n", f16);
      |             ~^     ~~~
      |              |     |
      |              |     _Float16
      |              double
Run Code Online (Sandbox Code Playgroud)

这是否意味着在__STDC_WANT_IEC_60559_TYPES_EXT__AND 下如果FLT16_MAX定义了 gcc 不知道printf可以与 一起使用_Float16?是否应该有所了解? …

c printf gcc language-lawyer half-precision-float

4
推荐指数
1
解决办法
471
查看次数

为什么 C 预处理器是未定义行为的主体?

我可以这么理解:

  • UB 的起源之一是性能提高(例如,通过删除从未执行的代码,例如if (i+1 < i) { /* never_executed_code */ };UPD:ifi是有符号整数)。
  • UB可以在编译时触发,因为C没有明确区分编译时和运行时。“整个语言基于“抽象机器”(链接)的(相当无用的)概念。

但是,我还不明白为什么 C 预处理器是未定义行为的主题?众所周知,预处理指令是在编译时执行的。

考虑 C11,6.10.3.3 ## 运算符,3:

如果结果不是有效的预处理标记,则行为未定义。

为什么不把它作为一个约束呢?例如:

结果应是有效的预处理令牌。

同样的问题也适用于 6.10 预处理指令中的所有其他“行为未定义”。

c undefined-behavior language-lawyer c-preprocessor c11

4
推荐指数
1
解决办法
352
查看次数

运算符或标点符号的哪些元素是标点符号?

我研究 C++ 术语。我无法理解“标点符号”一词。

例如,考虑https://eel.is/c++draft/lex.pptoken(添加了重点):

转换为标记的每个预处理标记应具有关键字、标识符、文字、运算符或标点符号的词汇形式。

这表明运算符和标点符号是不同的实体。那是对的吗?

注意:C 中有标点符号(首先),其中一些标点符号是运算符。

所有标点符号的列表是什么?换句话说:运算符或标点符号的哪些元素是标点符号?

c++ compatibility terminology language-lawyer punctuator

4
推荐指数
1
解决办法
171
查看次数

类中的typedef结构的奇怪行为

我对typedef struct类和函数中的构造有奇怪的行为.不同之处在于,在第一种情况下,所有定义都在类定义期间执行.另一种情况 - 在函数定义期间.看看我的代码.

class C
{
public:
    //struct xStruct;
    typedef struct xStruct* xPtr;
    typedef struct xStruct {xPtr F;} xStructR;
    typedef struct { xPtr First; } xPtr_Type;
    void F(void **Var)
    {
        xPtr Ptr = 0;
        ((xPtr_Type*)Var)->First = Ptr->F; //errors
    }
};

void Fu()
{
    typedef struct qxStruct* qxPtr;
    typedef struct qxStruct {qxPtr qF;} qxStructR;
    typedef struct { qxPtr qFirst; } qxPtr_Type;
    qxPtr qPtr = 0;
    void **qVar = 0;
    ((qxPtr_Type*)qVar)->qFirst = qPtr->qF;
}
Run Code Online (Sandbox Code Playgroud)

在使用MS编译器(cl.exe)进行编译期间,我有两个错误:

error C2027: use of …
Run Code Online (Sandbox Code Playgroud)

c++

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

将指向同一联合成员​​的两个指针传递给函数是否违反了严格的别名规则?

注意:学习严格的别名规则。请耐心等待。

代码示例(t935.c):

#include <stdio.h>

int f(int* pi, double* pd)
{
    *pi = 13;
    *pd = 7E-323;
    return *pi;
}

int main(void)
{
    union { int i; double d; } u;
    printf("%d\n", f(&u.i, &u.d));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

调用:

$ gcc t935.c -Wall -Wextra -std=c11 -pedantic  && ./a.exe
14

$ gcc t935.c -Wall -Wextra -std=c11 -pedantic -O2 && ./a.exe
13

$ gcc t935.c -Wall -Wextra -std=c11 -pedantic -O2 -fno-strict-aliasing && ./a.exe
14
Run Code Online (Sandbox Code Playgroud)

问题:将指向同一联合成员​​的两个指针传递给函数是否违反了严格的别名规则?

这个问题源于Unions 和 type-punning

UPD20210901

如果在全局范围内定义联合类型会发生什么?

对于“u …

c pointers constraints strict-aliasing c11

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

MSVC:C ++ 14:std:set:比较函数:为什么需要“const”?

示例代码:

#include <string>
#include <set>

using namespace std;

class x
{
private:
  int i;
public:
  int get_i() const { return i; }
};

struct x_cmp
{
    bool operator()(x const & m1, x const & m2)
#if _MSC_VER
    const
#endif
    {
        return m1.get_i() > m2.get_i();
    }
};

std::set<x, x_cmp> members;

void add_member(x const & member)
{
    members.insert(member);
}
Run Code Online (Sandbox Code Playgroud)

调用:

$ g++ -c -std=c++14 -pedantic -Wall -Wextra
<nothing>
$ clang++ -c -std=c++14 -pedantic -Wall -Wextra
<nothing>
$ icc -c -std=c++14 -pedantic -Wall …
Run Code Online (Sandbox Code Playgroud)

c++ const-correctness visual-c++ stdset c++14

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

为什么一元 * 运算符没有“操作数不得是指向 void 的指针”的约束?

C2x,6.5.3.2 地址和间接运算符,约束,2:

一元 * 运算符的操作数应为指针类型。

为什么没有“操作数不能是指向的指针void”的约束?


虽然可以从以下推论:

C2x,6.5.3.2 地址和间接运算符,语义,4:

元 * 运算符表示间接。如果操作数指向函数,则结果是函数指示符;如果它指向一个对象,则结果是指定该对象的左值。

C2x,6.3.2.1 左值、数组和函数指示符,1:

是一个可能指定对象的表达式(具有除 void 之外的对象类型);...

c void dereference language-lawyer

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