小编Ter*_*ang的帖子

方法参数不需要__bridge?

我们知道,使用ARC我们需要__bridge将id转换为void *:

void *t = (void *)self;           // ERROR: Cast of ... requires a bridged cast
void *t = (__bridge void *)self;  // CORRECT
Run Code Online (Sandbox Code Playgroud)

C函数调用也是如此:

void f(void *t) {
  ....
}

f((void *)self);           // ERROR
f((__bridge void *)self);  // CORRECT
Run Code Online (Sandbox Code Playgroud)

我认为这也适用于方法,事实上,iOS 5 Tutorial中的这个Beginning ARC给出了以下示例,并说__bridge需要:

MyClass *myObject = [[MyClass alloc] init];
[UIView beginAnimations:nil context:(__bridge void *)myObject];
Run Code Online (Sandbox Code Playgroud)

但是,今天我不小心__bridge在我的一个程序中删除了一个方法调用,并且代码编译并运行没有任何问题.在__bridge上面的示例中似乎是不必要的:

[UIView beginAnimations:nil context:(void *)myObject];  // COMPILED OK
Run Code Online (Sandbox Code Playgroud)

这是正确的吗?就是__bridge在这种情况下,实际上是不必要的?或者删除它会改变代码的含义?

bridge objective-c ios automatic-ref-counting

9
推荐指数
1
解决办法
668
查看次数

CSS选择器是否没有任何效果的属性?

我有一个维护工作,有一个巨大的CSS文件,我发现了很多类似的东西:

.xxxx {}
Run Code Online (Sandbox Code Playgroud)

也就是说,一个绝对没有任何内容的选择器.我认为它们没用,但有很多这些我开始怀疑自己.我是对的,可以安全地将它们移除吗?或者他们实际上在做什么,我应该保留它们?

css

6
推荐指数
1
解决办法
56
查看次数

标签 统计

automatic-ref-counting ×1

bridge ×1

css ×1

ios ×1

objective-c ×1