我有一个UIView,用户可以点击UIView"选择"或突出显示它所代表的应用内"事物".我CGRectContainsPoint(thing.frame,tapPoint)用来实现这个,thing.frame它的框架在哪里UIView,并且tapPoint是从a的分接点UITapGestureRecognizer.这很完美.
..except UIView通过设置transform属性(带有CGAffineTransform值)旋转.当UIView像这样旋转时,它frame变成一个封闭旋转视图的扁平方形.
以下是问题的示意图(框架属性标记为A,视觉UIView bounds标记为B):
不旋转时
+------------------+
| A == B |
+------------------+
Run Code Online (Sandbox Code Playgroud)
旋转时
+-----------------+
| A . |
| . . |
| . . |
| . . |
| . B . |
| . . |
| . . |
| . |
+-----------------+
Run Code Online (Sandbox Code Playgroud)
我想捕获在rect的范围内的抽头B(UIView旋转的真实边界),但是当它们仅在rect A( …
在创建一个简单的MongoDB查询时,我对查询中的条件排序有疑问- 例如(Mongoose.js语法):
conditions = { archived: false, first_name: "Billy" };
Run Code Online (Sandbox Code Playgroud)
与
conditions = { first_name: "Billy", archived: false };
Run Code Online (Sandbox Code Playgroud)
..在一个简单的find()函数中:
User.find(conditions, function(err, users) { <some logic> });
Run Code Online (Sandbox Code Playgroud)
..假设一个简单的单键索引策略:
UserSchema.index( { first_name: 1, archived: 1} );
Run Code Online (Sandbox Code Playgroud)
..上述条件的顺序是否重要?
重要提示:我知道复合索引的顺序很重要,但除此之外,我对单键索引查询很好奇.也对完全非索引查询的情况感兴趣,因为我们在这里.:)
替代解释:换句话说User,给定两个可能的内部MongoDB搜索策略,假设100 秒(50个存档,50个不存档):
archived用户,然后搜索剩余的50个未归档用户,其first_name值为"Billy"User文档中搜索first_name值"Billy",然后通过删除任何已归档的Billy来过滤找到的对象...我会假设#1更快(在具有两个以上条件的大型查询中可能更快).但无论哪个更快,为什么,肯定其中一个是.
核心问题:在复杂索引的庞大而强大的世界之外,MongoDB是否知道如何自动执行其最高性能/快速搜索/过滤器,无论哪个字段和哪个排序?或者我们是否需要以编程方式告诉系统什么是最好的(通过提供的条件顺序等)?
更新:
有关这方面的更多信息:
~~~~~~~~~~~~~~~~~~~~~~~~
情况
我有一些非常好的NSLog调用,我用它来调试应用程序中更复杂的部分.但是,我刚刚了解到这些会影响运行时性能!
目标
我希望在任何运行期间删除我的NSLog调用,其中我实际上没有在Xcode中执行Product> Run(aka command-R) - 特别是在App Store上部署此东西的情况下,以及我运行时应用程序从Xcode断开连接时(即只是在街上行走时点击图标).
建议的解决方案?
假设我已经创建了VIEW_DEBUG的预处理器宏,那么下面的实现是否会有效地从我上面描述的情况中删除NSLog调用?
<bunch of code>
#ifdef VIEW_DEBUG
NSLog(@"really complex logs entries");
#endif
<even more code>
Run Code Online (Sandbox Code Playgroud)
对我来说,这是一个很难"测试",所以我认为我会吸引更多有经验的人.:)
Xcode设置(供参考)

作为Rails项目的一部分,我想为"HTML(Rails)"(又名.html.erb)文件和Ruby on Rails文件(.rb文件)创建一些自定义设置(特别是缩进!).
我知道如何创建和编辑Preferences.sublime-settings文件 - 以及Ruby.sublime-settings文件 - 但是我对每种文件类型都有一个问题:
(1)对于.html.erb文件,在创建[language] .sublime-settings文件时我会使用哪种[语言]?在这种情况下是否有可能使用的所有语言的大清单和其他语言?
(2)在我创建了这些自定义设置之后(正如我已经为Ruby.sublime-settings设置,将我的选项卡自定义为2个空格),我想全局地将这些新设置应用于所有Ruby riles.
(Bonus)我的Rails项目中的.rb文件似乎加载了"Ruby on Rails"语法,而不仅仅是"Ruby"语法(显示在Sublime Text的右下角).如果Ruby.sublime-settings不会影响.rb"Ruby on Rails"文件(这对我来说似乎就是这种情况......),我希望能为.html.erb和.rb文件提供#1的答案.作为Rails项目的一部分创建.
我发现了很多关于这个问题的SO的信息,但是在用了大约1小时的谷歌搜索和爬行Sublime Text文档之后,上面的两个问题对我来说仍然没有答案.
谢谢!
对于objective-c来说很新,但是我遇到了一个很常见的情况:我希望ClassA要求ClassB对只有ClassB知道的对象执行一个方法(并且还使用ClassA未知的方法) ).
我已经找到了两种方法:performSelector:和forwardInvocation: - 但是我想学习更多并巩固我对每个方面的理解.我在apple开发者文档中找到了这个注释:
aSelector参数[在performSelector:]中应该标识不带参数的方法.对于返回除对象以外的任何内容的方法,请使用NSInvocation.
..这意味着以- (id)methodName开头的方法将使用performSelector : ,而说- (int)nonObjectMethodName将使用forwardInvocation : ?
还有什么方法返回(void)?或者返回非id对象的方法,例如(NSString)?
做Michael Hartl的Rails教程,第10章,第5节,练习2.我 - 非常简单 - 尝试编写测试以确保使用will_paginate gem在几页上出现分页div(这似乎是Hartl测试分页是否有效的首选方法),但是当我添加以下代码时...
subject { page }
.
.
.
it { should have_selector('div.pagination') }
Run Code Online (Sandbox Code Playgroud)
..it返回..
1) UserPages profile page
Failure/Error: it { should have_selector('div.pagination') }
expected css "div.pagination" to return something
Run Code Online (Sandbox Code Playgroud)
这特别奇怪,因为在这个特定的_spec文件中,这个相同的Rspec代码在一些测试中传递而在其他测试中失败(我将在下面强调这一点).另外,paginationDIV存在于我的浏览器的源代码,当然,它的正常工作.
因为它在某些地方而不是在其他地方失败,我得假设这是某种"范围" - 或与之相关的分配类型问题will_paginate- 您看,对于失败的测试,被分页的内容实际上是"Microposts"的一部分"控制器,但正在测试的页面/视图由"用户"控制器处理.对于通过测试,视图和控制器都是"用户".
这可能是问题吗?我的FactoryGirl设置/调用也可能被破坏,并且由于某种原因没有在测试中触发分页代码.我是一个Rails n00b - 实际上是编程的新手 - 所以谢谢你们.:)
(另外,ps,我如何让我的代码变得丰富多彩?)
/spec/requests/user_pages_spec.rb
require 'spec_helper' # Omitted from below - I don't think this is relevant.
describe "UserPages" do
subject { page }
describe "index" do # This …Run Code Online (Sandbox Code Playgroud) ruby-on-rails will-paginate capybara ruby-on-rails-3 railstutorial.org
更新:此处还报告了此问题,并对原因进行了更详细的处理:
UIImageWriteToSavedPhotosAlbum只保存10个图像.为什么?
在我的情况下,错误是:"写忙" - 这似乎是与设备速度有关的问题.可能有一些解决方案涉及手动处理线程或类似问题 - 但是,受Tommy在下面的回答的启发,我序列化了图像的保存,并解决了这个问题.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
情况:
我正在尝试使用for循环将大量图像集保存到相机胶卷(图像数量取决于用户输入 - 可能是1,2,3或理论上数百).图像由一个指向NSSet(虽然我可以很容易地做NSArray),并且在for循环完成之后NSSet设置为nil.
我正在使用UIImageWriteToSavedPhotosAlbum()在分离的线程上保存图像(使用NSThread's detachNewThreadSelector:toTarget:withObject:类方法),并UIActivityIndicator在主线程上启动微调器.
问题:
当我尝试保存超过~5时,~5之后的任何图像都会在日志中输出此错误:
*** -[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
例如,假设我导出了9张图像.for循环将遍历所有9个图像(由NSLogging确认),但我将获得上述错误的4次迭代(并且只有5个图像保存到相机胶卷).
如果我在循环中添加一个断点并在每次迭代之间等待一两秒,那么它们都可以正确保存而不会抱怨.所以..
理论:
基于我的日志和观察,UIImageWriteToSavedPhotosAlbum()显然是异步运行,并且在某种程度上"太慢"无法跟上我的应用程序.
是否有一种简单的方法可以强制它同步运行(理想情况下在主线程上)?我一直在尝试为我想要保存的图像添加引用计数,但是(1)这感觉很麻烦,(2)我没有解决问题.
任何建议都会很棒.谢谢!
一个相当常见的模式是:如果存在某个对象,我想在我的代码中使用该对象,但如果没有设置,我想要故障转移到某个默认值.
使用背景图像作为示例,并假设UIImage *backgroundImage在评估此代码时可能设置或不设置某些属性,执行此操作的详细方法可能是:
UIImage *image;
if (self.backgroundImage) {
image = self.backgroundImage;
} else {
image = [UIImage imageNamed:@"default"];
}
Run Code Online (Sandbox Code Playgroud)
更紧凑的方法是:
UIImage *image = (self.backgroundImage) ? self.backgroundImage : [UIImage imageNamed:@"default"];
Run Code Online (Sandbox Code Playgroud)
我的问题是:是否有更简洁的方法来实现这一目标?
就像是:
UIImage *image = self.backgroundImage || [UIImage imageNamed:@"default"];
Run Code Online (Sandbox Code Playgroud)
我在Clang Literals文档中找不到任何内容,但这种简写实际上可能不会被视为"文字",甚至可能成为Clang的一部分.
(我也不确定Clang/LLVM的"(真值陈述)?id1:id2"语法在哪里;知道那些简短陈述的详尽集合在哪里也会很棒!)
ios ×5
objective-c ×5
ios5 ×2
capybara ×1
clang ×1
cocoa-touch ×1
ide ×1
indentation ×1
ios5.1 ×1
mongodb ×1
mongoose ×1
rotation ×1
ruby ×1
sublimetext ×1
uiview ×1