小编tob*_*pwn的帖子

如何在旋转的UIView中使用CGRectContainsPoint()

我有一个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( …

objective-c rotation uiview cgaffinetransform ios

5
推荐指数
1
解决办法
1135
查看次数

MongoDB(和Mongoose.js):查询条件的顺序是否重要?

在创建一个简单的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个不存档):

  1. 首先筛选出所有50个archived用户,然后搜索剩余的50个未归档用户,其first_name值为"Billy"
  2. 首先在ALL 100 User文档中搜索first_name值"Billy",然后通过删除任何已归档的Billy来过滤找到的对象.

..我会假设#1更快(在具有两个以上条件的大型查询中可能更快).但无论哪个更快,为什么,肯定其中一个是.

核心问题:在复杂索引的庞大而强大的世界之外,MongoDB是否知道如何自动执行其最高性能/快速搜索/过滤器,无论哪个字段和哪个排序?或者我们是否需要以编程方式告诉系统什么是最好的(通过提供的条件顺序等)?

mongoose mongodb

5
推荐指数
1
解决办法
1838
查看次数

Objective-C:从'Distribution'/ production builds中删除NSLog调用?

更新:

有关这方面的更多信息:

是否应该在生产代码上使用NSLog()?

~~~~~~~~~~~~~~~~~~~~~~~~

情况

我有一些非常好的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设置(供参考)

xcode设置

objective-c ios ios5

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

Sublime Text 2设置创建中有哪些可能的语言/语法?

作为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文档之后,上面的两个问题对我来说仍然没有答案.

谢谢!

ruby ide ruby-on-rails indentation sublimetext

3
推荐指数
1
解决办法
2331
查看次数

Objective-C:performSelector:vs forwardInvocation:

对于objective-c来说很新,但是我遇到了一个很常见的情况:我希望ClassA要求ClassB对只有ClassB知道的对象执行一个方法(并且还使用ClassA未知的方法) ).

我已经找到了两种方法:performSelector:forwardInvocation: - 但是我想学习更多并巩固我对每个方面的理解.我在apple开发者文档中找到了这个注释:

aSelector参数[在performSelector:]中应该标识不带参数的方法.对于返回除对象以外的任何内容的方法,请使用NSInvocation.

..这意味着以- (id)methodName开头的方法将使用performSelector : ,而说- (int)nonObjectMethodName将使用forwardInvocation : ?

还有什么方法返回(void)?或者返回非id对象的方法,例如(NSString)

objective-c ios ios5 ios5.1

3
推荐指数
1
解决办法
1949
查看次数

使用Capybara/Rspec使用will_paginate Gem测试视图

做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

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

Objective-C:UIImageWriteToSavedPhotosAlbum()+ asynchronous =问题

更新:此处还报告了此问题,并对原因进行了更详细的处理:

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)我没有解决问题.

任何建议都会很棒.谢谢!

cocoa-touch objective-c ios

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

Objective-C:"id =(property)?property:defaultObject;"的快捷方式 - 它存在吗?

一个相当常见的模式是:如果存在某个对象,我想在我的代码中使用该对象,但如果没有设置,我想要故障转移到某个默认值.

使用背景图像作为示例,并假设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"语法在哪里;知道那些简短陈述的详尽集合在哪里也会很棒!)

objective-c clang ios

0
推荐指数
1
解决办法
81
查看次数