小编Ale*_*pov的帖子

嵌套的UIStack查看破坏的约束

我有一个复杂的视图层次结构,内置在Interface Builder中,具有嵌套的UIStackViews.每次隐藏一些内部堆栈视图时,我都会收到"不满意的约束"通知.我跟踪到了这个:

(
    "<NSLayoutConstraint:0x1396632d0 'UISV-canvas-connection' UIStackView:0x1392c5020.top == UILabel:0x13960cd30'Also available on iBooks'.top>",
    "<NSLayoutConstraint:0x139663470 'UISV-canvas-connection' V:[UIButton:0x139554f80]-(0)-|   (Names: '|':UIStackView:0x1392c5020 )>",
    "<NSLayoutConstraint:0x139552350 'UISV-hiding' V:[UIStackView:0x1392c5020(0)]>",
    "<NSLayoutConstraint:0x139663890 'UISV-spacing' V:[UILabel:0x13960cd30'Also available on iBooks']-(8)-[UIButton:0x139554f80]>"
)
Run Code Online (Sandbox Code Playgroud)

具体来说,UISV-spacing约束:当隐藏UIStackView时,它的高约束得到一个0常量,但这似乎与内部stackview的间距约束发生冲突:它需要我的Label和Button之间有8个点,这与隐藏约束是不可调和的,因此约束崩溃.

有没有解决的办法?我已经尝试递归隐藏隐藏堆栈视图的所有内部StackViews,但这导致奇怪的动画,其中内容浮出屏幕,并导致严重的FPS下降启动,同时仍然没有解决问题.

cocoa-touch interface-builder ios autolayout uistackview

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

Swift 3 ObjC在子类中不调用的可选协议方法

我有以下类层次结构:

class ScrollableViewController: UIViewController, UITableViewDelegate { // ... }
Run Code Online (Sandbox Code Playgroud)

这实现了一种UITableViewDelegate协议方法,例如tableView:willDisplayCellAt:

在我的SpecificScrollableViewController继承自的类中,ScrollableViewController新的可选协议方法不再被调用,例如tableView(_:heightForRowAt:)

cocoa-touch ios swift swift3 ios10

14
推荐指数
1
解决办法
4704
查看次数

OS X中的多线程C程序比Linux慢得多

我为OS课程作业写了这篇文章,我已经完成并递交了.我昨天发布了这个问题,但是由于"学术诚实"规定,我把它推迟到提交截止日期之后.

目的是学习如何使用关键部分.有一个data数组有100个单调递增的数字,0 ... 99和40个线程,每个线程随机交换两个元素2,000,000次.一秒钟后Checker,确保每个号码只有一个(这意味着没有发生并行访问).

这是Linux时代:

real    0m5.102s
user    0m5.087s
sys     0m0.000s
Run Code Online (Sandbox Code Playgroud)

和OS X次

real    6m54.139s
user    0m41.873s
sys     6m43.792s
Run Code Online (Sandbox Code Playgroud)

ubuntu/trusty64在运行OS X的同一台机器上运行一个流浪盒.它是一个四核i7 2.3Ghz(高达3.2Ghz)2012 rMBP.

如果我理解正确,sys是系统开销,我无法控制,即便如此,41s的用户时间表明线程可能是串行运行的.

如果需要,我可以发布所有代码,但我会发布我认为相关的位.我正在使用,pthreads因为这是Linux提供的,但我认为它们适用于OS X.

创建swapper运行swapManyTimes例程的线程:

for (int i = 0; i < NUM_THREADS; i++) {
    int err = pthread_create(&(threads[i]), NULL, swapManyTimes, NULL);
}
Run Code Online (Sandbox Code Playgroud)

Swapper 线程关键部分,在for循环中运行200万次:

pthread_mutex_lock(&mutex);    // begin critical section
int tmpFirst = data[first];
data[first] = data[second];
data[second] = tmpFirst;
pthread_mutex_unlock(&mutex);  // end critical …
Run Code Online (Sandbox Code Playgroud)

c linux macos multithreading pthreads

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

UICollectionView接收到具有不存在索引路径的单元格的布局属性:&lt;NSIndexPath:0x79fe0f20&gt; {length = 2,path = 0-4}

当我第一次加载UICollectionView没问题的时候,我使用自定义布局和一个serachbar,当我搜索一些文本时,它崩溃,抛出异常,即带有索引路径的单元格不存在,Im使用了搜索栏,例如下一个代码:

import UIKit
import AVFoundation

class CategoryViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UISearchBarDelegate {

    var ListArray : JSON! = []
    var SelectedIds: [Int] = []
    var SearchActive : Bool = false
    var SearchArray = [Int]()

    @IBOutlet weak var SearchCategories: UISearchBar!

    @IBOutlet weak var CategoryCollection: UICollectionView!

    override func viewDidLoad() {
        super.viewDidLoad()

        if let layout = self.CategoryCollection.collectionViewLayout as? InterestsLayout {
            layout.delegate = self
        }

        self.CategoryCollection.backgroundColor = UIColor.clearColor()
        self.CategoryCollection.contentInset = UIEdgeInsets(top: 18, left: 3, bottom: 10, right: 3)

        // Search Delegate
        self.SearchCategories.delegate = self
    } …
Run Code Online (Sandbox Code Playgroud)

swift

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