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

所以我想要自动添加所有依赖项 - 这是可能的还是我必须通过所有类文件来识别和添加maven依赖项?!
更新:在做了一些修改后,我发现了如何以某种方式解决我的问题.多数民众赞成我所做的:

但我认为逻辑上它不会包含并检查前面的新依赖项?!...在intelliJ中是否有任何设置区域 - 自动导出依赖于类路径?
我正在努力完全理解GCD中的并发和串行队列.我有一些问题,希望有人能够清楚地回答我.
我正在读取串行队列的创建和使用,以便一个接一个地执行任务.但是,如果出现以下情况:
dispatch_async(在我刚创建的串行队列上)三次来发送三个块A,B,C这三个块会被执行:
按顺序A,B,C,因为队列是串行的
要么
我正在阅读我可以dispatch_sync在并发队列上使用,以便一个接一个地执行块.在这种情况下,为什么串行队列甚至存在,因为我总是可以使用并发队列,我可以根据需要同步调度多个块?
谢谢你的任何好解释!
我的问题:我有一个超级视图EditView,基本上占用整个应用程序框架,子视图MenuView只占用底部〜20%,然后MenuView包含它自己的子视图ButtonView,它实际上位于MenuView边界之外(类似这样:) ButtonView.frame.origin.y = -100.
(注意:EditView其他子视图不属于MenuView视图层次结构,但可能会影响答案.)
您可能已经知道了这个问题:何时ButtonView在MenuView(或者更具体地说,当我的触摸在MenuView范围内)时,ButtonView响应触摸事件.当我的触摸超出MenuView界限(但仍然在ButtonView界限内)时,不会收到任何触摸事件ButtonView.
例:
EditView所有观点的父母MenuViewEditView的子视图ButtonViewMenuView的子视图图:
+------------------------------+
|E |
| |
| |
| |
| |
|+-----+ |
||B | |
|+-----+ |
|+----------------------------+|
||M ||
|| ||
|+----------------------------+|
+------------------------------+
Run Code Online (Sandbox Code Playgroud)
因为(B)在(M)的框架之外,(B)区域中的抽头将永远不会被发送到(M) - 实际上,(M)在这种情况下从不分析触摸,并且触摸被发送到层次结构中的下一个对象.
目标:我认为压倒一切hitTest:withEvent:可以解决这个问题,但我不明白究竟是怎么回事.在我的情况下,应该hitTest:withEvent: …
我是iOS开发新手.我想在选中UITableViewCell时添加一个复选标记.选中另一行时,应删除复选标记.我该怎么做?
UITableView有方法rectForRowAtIndexPath:,但这在UICollectionView中不存在.我正在寻找一个很好的干净方法来获取一个单元格的边界矩形,也许我可以添加一个类别UICollectionView.
苹果型(类)方法的一个很好的解释在这里.
但是,他们的示例如下所示:
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) 我遇到了一个场景,我有一个委托回调,可能发生在主线程或另一个线程上,我不知道哪个直到运行时(使用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
我希望有人有这些错误,并知道如何解决它.
这是Xcode 5 b4中突然出现的控制台输出:
平台/ iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk/System/Library/AccessibilityBundles/CertUIFramework.axbundle>(未加载)
跟我说,这需要一些解释.我有一个看起来像下面的功能.
上下文:"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
从RxSwift4开始,Variable移动到Deprecated.swift标记Variable未来可能的弃用.建议的替代方案Variable是BehaviorRelay.在发布这个问题时,由于我在网上找不到太多的教程,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.value是readOnly.很明显
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正确使用?有没有更好的方法来解决它?
请帮忙