小编Han*_*nXu的帖子

__weak和__block引用有什么区别?

我正在阅读Xcode的文档,这里有些令我困惑的事情:

__block typeof(self) tmpSelf = self;
[self methodThatTakesABlock:^ {
    [tmpSelf doSomething];
}];
Run Code Online (Sandbox Code Playgroud)

从文档中复制以下内容:

块形成对其捕获的变量的强引用.如果self在块中使用 ,则块形成强引用self,因此如果 self还具有对块的强引用(通常它具有),则会产生强引用循环.要避免循环,您需要__block在块外部创建一个弱(或)引用,如上例所示.

我不明白'弱(或__block)'是什么意思?

__block typeof(self) tmpSelf = self;
Run Code Online (Sandbox Code Playgroud)

__weak typeof(self) tmpSelf = self;
Run Code Online (Sandbox Code Playgroud)

这里完全一样吗?

我在文件中找到了另一篇文章:

注意:在垃圾收集环境中,如果将两个__weak__block修饰符都应用于变量,则该块将无法确保它保持活动状态.

所以,我完全不解.

memory-management weak-references objective-c ownership objective-c-blocks

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

如何在unordered_map中使用lambda函数作为哈希函数?

我想知道是否可以在C++ 11中使用lambda函数作为unordered_map的自定义散列函数?如果是这样,语法是什么?

c++ c++11

35
推荐指数
1
解决办法
9578
查看次数

bootstrap模态在显示后立即消失

我在rails中使用bootstrap的模态插件

网站说我可以在没有写javascript的情况下获得该功能.

我在HTML中添加以下行(在slim中):

div#makeDream.modal.hide.fade 
    div.modal-header
        a.close data-dismiss='modal'
        h3 Hello World!            
    div.modal-body
    div.modal-footer

a data-toggle='modal' data-target='#makeDream' Button
Run Code Online (Sandbox Code Playgroud)

但是,我点击后Button.模态显示,但立即消失!

我发现CSS的#makeDream

display:none
Run Code Online (Sandbox Code Playgroud)

我不知道它来了

有人能告诉我如何解决它吗?

css jquery ruby-on-rails twitter-bootstrap

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

调整动画大小后,UIButton不尊重Aspect Fill contentMode

我使用自动布局.以下是视图的初始状态.

中间是视图中包含的按钮.该按钮具有contentMode Aspect Fill,并且图像被设置为按钮的背景图像.

在此输入图像描述

然后我使用以下代码转换视图,这将放大中心卡以填充屏幕,并将图像移动到视图的顶部:

cardTrailingSpaceConstraint.constant = 0
cardLeadingSpaceConstraint.constant = 0
cardView.removeConstraint(cardAspectRatioConstraint)
let cardHeightConstraint = NSLayoutConstraint(item: cardView, attribute: .Height, relatedBy: .Equal, toItem: view, attribute: .Height, multiplier: 1.0, constant: 0)
view.addConstraint(cardHeightConstraint)

dishImageButton.removeConstraint(dishButtonBottomSpaceConstraint)
let dishButtonHeightConstraint = NSLayoutConstraint(item: dishImageButton, attribute: .Height, relatedBy: .Equal, toItem: cardView, attribute: .Height, multiplier: 0.2, constant: 0)
cardView.addConstraint(dishButtonHeightConstraint)

cardView.setNeedsUpdateConstraints()
UIView.animateWithDuration(0.7, delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 0.7, options: nil, animations: { [unowned self] () -> Void in
    self.cardHeader.alpha = 0
    self.cardView.layer.cornerRadius = 0
    self.cardView.layoutIfNeeded()

    }) { [unowned self] (finished) -> …
Run Code Online (Sandbox Code Playgroud)

ios swift ios8

24
推荐指数
9
解决办法
3万
查看次数

A*在真实世界寻路中真的比Dijkstra好吗?

我正在开发一个寻路程序.据说理论上A*比Dijkstra好.事实上,后者是前者的特例.但是,在现实世界中进行测试时,我开始怀疑A*真的更好吗?

我使用纽约市的数据,从第9个DIMACS实施挑战 - 最短路径,其中给出了每个节点的纬度和经度.

当应用A*时,我需要使用Haversine公式计算两点之间的球面距离,该公式涉及sin,cos,arcsin,平方根.所有这些都非常耗时.

结果是,

使用Dijkstra:39.953 ms,扩展了256540个节点.

使用A*,108.475 ms,扩展255135个节点.

注意到在A*中,我们扩展了1405个节点.但是,计算启发式的时间远远超过保存的时间.

根据我的理解,原因在于,在一个非常大的实数图中,启发式的权重将非常小,并且可以忽略它的效果,而计算时间占主导地位.

algorithm a-star dijkstra

21
推荐指数
3
解决办法
6648
查看次数

rails如何实现before_filter?

我对rails如何实现过滤器感兴趣before_filter.

但在阅读完源代码后,我仍然感到困惑.

我注意到rails的框架维护了一个filter_chain,并在目标方法之前运行过滤器.

但是,我不明白一个重要的过程:rails如何捕获一个方法调用?

我的意思是,例如,我有一个类Dog,并设置before_filter方法树皮.

当我调用时dog.bark,rails应该以某种方式捕获此调用,并改为运行其修改的方法.

但是,我在源代码中找不到这样的代码.

任何人都可以告诉我这个想法或指出代码所在的位置吗?

ruby ruby-on-rails

20
推荐指数
1
解决办法
7459
查看次数

如何在导航栏中添加页面指示器?

像twitter一样:

在此输入图像描述

我在UITabBarController中有一个PageViewController,而UITabBarController又在UINavigationController中.

谁能告诉我如何在导航栏中显示页面指示器?

ios

18
推荐指数
1
解决办法
7027
查看次数

如何在触发新动画时取消上一个动画?

我正在写一个相机应用程序,当用户点击屏幕时显示焦点方块有问题.

我的代码是(快速):

self.focusView.center = sender.locationInView(self.cameraWrapper)
self.focusView.transform = CGAffineTransformMakeScale(2, 2)
self.focusView.hidden = false

UIView.animateWithDuration(0.5, animations: { [unowned self] () -> Void in
    self.focusView.transform = CGAffineTransformIdentity
}, completion: { (finished) -> Void in
    UIView.animateWithDuration(0.5, delay: 1.0, options: nil, animations: { () -> Void in
        self.focusView.alpha = 0.0
    }, completion: { (finished) -> Void in
            self.focusView.hidden = true
            self.focusView.alpha = 1.0
    })
})
Run Code Online (Sandbox Code Playgroud)

但是,如果在前一个动画没有完成时连续点击屏幕,则新旧动画会混淆,焦点视图会表现得很奇怪,例如它会很快消失.

谁能告诉我如何取消以前的动画,特别是之前的完成块?

ios swift

18
推荐指数
1
解决办法
2万
查看次数

如何在Rails中发布数组

我想将数据作为JSON发布到控制器

在javascript中,数据是一个数组,例如,a = [1,2]

然后我发帖,说

$.post('user/data', {'data' : a})
Run Code Online (Sandbox Code Playgroud)

在用户控制器中,我从params获取数据.

但是,当我检索params [:data]时,我得到了一个哈希:

{"0"=>1, "1"=>2}
Run Code Online (Sandbox Code Playgroud)

而不是一个数组!

所以我必须手动将哈希转换为数组.

有没有方法将确切的数组传递给控制器​​?

html jquery ruby-on-rails

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

如何禁用active_admin的批处理操作?

我想在active_admin中使用gem best_in_place进行就地编辑.但是,每当我按Enter键时,似乎active_admin捕获该事件并指向XXXController的batch_action方法.哪个没找到......

但是,如果经过编辑.我点击一个空白区域... best_in_place工作,数据库更新...

那么..要解决它吗?

rubygems ruby-on-rails

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