小编Jan*_*ano的帖子

在IntelliJ IDEA中导入Maven依赖项

我有一个关于IntelliJ IDEA 11的小问题.我刚刚从subversion导入了一个项目 - 它是一个maven项目.但我在maven库依赖项中遇到问题,因此我无法自动包含所有maven依赖项 - IDEA仅在我打开该类时显示依赖项错误/这就是我在这里得到的:

在此输入图像描述

所以我想要自动添加所有依赖项 - 这是可能的还是我必须通过所有类文件来识别和添加maven依赖项?!

更新:在做了一些修改后,我发现了如何以某种方式解决我的问题.多数民众赞成我所做的: 在此输入图像描述

但我认为逻辑上它不会包含并检查前面的新依赖项?!...在intelliJ中是否有任何设置区域 - 自动导出依赖于类路径?

java intellij-idea maven-3 maven

192
推荐指数
13
解决办法
43万
查看次数

GCD中的并发vs串行队列

我正在努力完全理解GCD中的并发和串行队列.我有一些问题,希望有人能够清楚地回答我.

  1. 我正在读取串行队列的创建和使用,以便一个接一个地执行任务.但是,如果出现以下情况:

    • 我创建了一个串行队列
    • 我使用dispatch_async(在我刚创建的串行队列上)三次来发送三个块A,B,C

    这三个块会被执行:

    • 按顺序A,B,C,因为队列是串行的

      要么

    • 同时(在parralel线程上同时)因为我使用了ASYNC调度
  2. 我正在阅读我可以dispatch_sync在并发队列上使用,以便一个接一个地执行块.在这种情况下,为什么串行队列甚至存在,因为我总是可以使用并发队列,我可以根据需要同步调度多个块?

    谢谢你的任何好解释!

concurrency multithreading grand-central-dispatch ios

106
推荐指数
5
解决办法
5万
查看次数

使用hitTest:withEvent捕获其超级视图框架外的子视图的触摸:

我的问题:我有一个超级视图EditView,基本上占用整个应用程序框架,子视图MenuView只占用底部〜20%,然后MenuView包含它自己的子视图ButtonView,它实际上位于MenuView边界之外(类似这样:) ButtonView.frame.origin.y = -100.

(注意:EditView其他子视图不属于MenuView视图层次结构,但可能会影响答案.)

您可能已经知道了这个问题:何时ButtonViewMenuView(或者更具体地说,当我的触摸在MenuView范围内)时,ButtonView响应触摸事件.当我的触摸超出MenuView界限(但仍然在ButtonView界限内)时,不会收到任何触摸事件ButtonView.

例:

  • (E)是EditView所有观点的父母
  • (M)是MenuViewEditView的子视图
  • (B)是ButtonViewMenuView的子视图

图:

+------------------------------+
|E                             |
|                              |
|                              |
|                              |
|                              |
|+-----+                       |
||B    |                       |
|+-----+                       |
|+----------------------------+|
||M                           ||
||                            ||
|+----------------------------+|
+------------------------------+
Run Code Online (Sandbox Code Playgroud)

因为(B)在(M)的框架之外,(B)区域中的抽头将永远不会被发送到(M) - 实际上,(M)在这种情况下从不分析触摸,并且触摸被发送到层次结构中的下一个对象.

目标:我认为压倒一切hitTest:withEvent:可以解决这个问题,但我不明白究竟是怎么回事.在我的情况下,应该hitTest:withEvent: …

objective-c ios uiview-hierarchy

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

✔勾选UITableViewCell中选定的行

我是iOS开发新手.我想在选中UITableViewCell时添加一个复选标记.选中另一行时,应删除复选标记.我该怎么做?

uitableview ios

87
推荐指数
8
解决办法
9万
查看次数

如何获取UICollectionViewCell的矩形?

UITableView有方法rectForRowAtIndexPath:,但这在UICollectionView中不存在.我正在寻找一个很好的干净方法来获取一个单元格的边界矩形,也许我可以添加一个类别UICollectionView.

uitableview ios ios6 uicollectionview

60
推荐指数
4
解决办法
3万
查看次数

在实例方法中调用类型方法

苹果型(类)方法的一个很好的解释在这里.

但是,他们的示例如下所示:

class SomeClass {
    class func someTypeMethod() {
        // type method implementation goes here
    }
}
SomeClass.typeMethod()
Run Code Online (Sandbox Code Playgroud)

我看到这个完全相同的例子到处乱窜.

但是,我需要从我的类的一个实例中调用我的Type方法,而这似乎不是计算的.

我必须做错事,但我注意到Apple还没有支持Class Properties :(.我想知道我是否会去干井用水.

这是我尝试过的(在操场上):

class ClassA
{
    class func staticMethod() -> String { return "STATIC" }

    func dynamicMethod() -> String { return "DYNAMIC" }

    func callBoth() -> ( dynamicRet:String, staticRet:String )
    {
        var dynamicRet:String = self.dynamicMethod()
        var staticRet:String = ""

//        staticRet = self.class.staticMethod() // Nope
//        staticRet = class.staticMethod() // No way, Jose
//        staticRet = ClassA.staticMethod(self) …
Run Code Online (Sandbox Code Playgroud)

methods types class ios swift

59
推荐指数
2
解决办法
4万
查看次数

为什么我们不能在当前队列上使用dispatch_sync?

我遇到了一个场景,我有一个委托回调,可能发生在主线程或另一个线程上,我不知道哪个直到运行时(使用StoreKit.framework).

我还需要在该回调中更新UI代码,这需要在函数执行之前发生,因此我最初的想法是拥有这样的函数:

-(void) someDelegateCallback:(id) sender
{
    dispatch_sync(dispatch_get_main_queue(), ^{
        // ui update code here
    });

    // code here that depends upon the UI getting updated
}
Run Code Online (Sandbox Code Playgroud)

当它在后台线程上执行时,它工作得很好.但是,当在主线程上执行时,程序陷入僵局.

这本身似乎对我有意思,如果我读的文档dispatch_sync正确的,那么我希望它只是执行彻底,不担心它安排到runloop块,如说在这里:

作为优化,此函数在可能的情况下调用当前线程上的块.

但是,这不是太大的交易,它只是意味着更多的打字,这导致我采用这种方法:

-(void) someDelegateCallBack:(id) sender
{
    dispatch_block_t onMain = ^{
        // update UI code here
    };

    if (dispatch_get_current_queue() == dispatch_get_main_queue())
       onMain();
    else
       dispatch_sync(dispatch_get_main_queue(), onMain);
}
Run Code Online (Sandbox Code Playgroud)

然而,这似乎有点倒退.这是制作GCD的一个错误,还是我在文档中遗漏了什么?

multithreading objective-c grand-central-dispatch objective-c-blocks

58
推荐指数
4
解决办法
3万
查看次数

Xcode 5错误CertUIFramework.axbundle

我希望有人有这些错误,并知道如何解决它.
这是Xcode 5 b4中突然出现的控制台输出:

平台/ iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk/System/Library/AccessibilityBundles/CertUIFramework.axbundle>(未加载)

xcode5

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

dispatch_sync与主队列上的dispatch_async

跟我说,这需要一些解释.我有一个看起来像下面的功能.

上下文:"aProject"是名为LPProject的核心数据实体,其名为"memberFiles"的数组包含另一个名为LPFile的Core Data实体的实例.每个LPFile表示磁盘上的文件,我们要做的是打开每个文件并解析其文本,查找指向OTHER文件的@import语句.如果我们找到@import语句,我们希望找到它们指向的文件,然后通过向代表第一个文件的核心数据实体添加关系,将该文件"链接"到该文件.由于所有这些都需要一些时间在大文件上,我们将使用GCD在主线程上完成.

- (void) establishImportLinksForFilesInProject:(LPProject *)aProject {
    dispatch_queue_t taskQ = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
     for (LPFile *fileToCheck in aProject.memberFiles) {
         if (//Some condition is met) {
            dispatch_async(taskQ, ^{
                // Here, we do the scanning for @import statements. 
                // When we find a valid one, we put the whole path to the imported file into an array called 'verifiedImports'. 

                // go back to the main thread and update the model (Core Data is not thread-safe.)
                dispatch_sync(dispatch_get_main_queue(), ^{

                    NSLog(@"Got to main thread.");

                    for …
Run Code Online (Sandbox Code Playgroud)

cocoa core-data objective-c grand-central-dispatch objective-c-blocks

52
推荐指数
2
解决办法
6万
查看次数

如何使用BehaviorRelay作为RxSwift中Variable的替代?

从RxSwift4开始,Variable移动到Deprecated.swift标记Variable未来可能的弃用.建议的替代方案VariableBehaviorRelay.在发布这个问题时,由于我在网上找不到太多的教程,BehaviorRelay我在SO中发布了这样一个基本问题.

假设我正在进行webService调用,并且我收到一块JSONArray数据,在逐个解析JSON对象时我更新了我的Variable的value属性

这是我的变量声明

var myFilter = Variable<[MyFilterModel]>([MyFilterModel(data: "{:}")])
Run Code Online (Sandbox Code Playgroud)

每次我将变量更新为获取新元素时

myFilter.value.append(newModel)
Run Code Online (Sandbox Code Playgroud)

当Variable绑定到CollectionView时,collectionVie将立即使用新添加的对象更新其UI.

使用BehaviorRelay的问题

现在我的声明看起来像

var myFilter = BehaviorRelay<[MyFilterModel]>(value: [MyFilterModel(data: "{:}")])
Run Code Online (Sandbox Code Playgroud)

但最大的问题myFilter.valuereadOnly.很明显

myFilter.value.append(newModel) 
Run Code Online (Sandbox Code Playgroud)

不是解决方案.我发现我可以使用accept.

但是现在当我尝试解析响应中的每个元素并更新myFilter的值时

self?.expertsFilter.accept(newModel)
Run Code Online (Sandbox Code Playgroud)

上面的陈述给出了错误引用

无法将NewModel的值转换为预期的争论类型[NewModel]

显然,它期待一个数组而不是一个单独的元素.

解决方法:

解决方案1:

因此,一个解决方案是在临时数组中累积所有响应并且一旦完成触发 self?.expertsFilter.accept(temporary_array)

解决方案2:

如果我必须onNext在解析每个元素时向订阅者发送事件,我需要将self?.expertsFilter的值复制到new Array,将新解析的元素添加到它并返回新数组.

解决方案3:

摆脱BehaviorRelay并使用BehaviorSubject/PublishSubject

前两个声音令人沮丧,因为可能需要在解析每个元素时触发UI我不能等到解析整个响应.因此,解决方案1显然没有多大用处.

第二种解决方案更加可怕,因为它每次发送onNext事件时都会创建一个新数组(我知道它是临时的并且将被释放).

题:

因为BehaviorRelay被提议作为Variable进入两难的替代方案,我accept正确使用?有没有更好的方法来解决它?

请帮忙

rx-swift

48
推荐指数
4
解决办法
2万
查看次数