小编Cri*_*ris的帖子

在需要时配置XCode 4工作区以构建依赖项的正确方法是什么?

我的情况很简单,一个包含两个兄弟项目的工作区:一个主(iOS)应用程序和一个构建应用程序使用的几个静态库目标的项目.

这是我如何配置构建:

  • 将主应用程序的构建设置中的"用户标题搜索路径"指向库项目位置(通过源树)
  • 在我的应用程序的主要目标编辑器 - >构建阶段 - >"链接二进制文件库"部分,添加了我想要使用的库产品.
  • 在该计划中,勾选'查找隐式依赖关系'

在清理(并删除派生数据)之后,构建会在构建主项目期间将此错误告诉我:

ld: library not found for -lChipmunk
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang failed with exit code 1
Run Code Online (Sandbox Code Playgroud)

果然,如果我查看新创建的派生数据,唯一找到的目标文件是主应用程序,而不是库.*.o文件的广泛"查找"并没有显示任何相关内容,因此库不会丢失,它们肯定不会被构建.

一些补充要点:

  • 当我在Apple开发论坛上询问过这个问题时,有人建议我在主目标的Build Phases-> Target Dependencies编辑器中添加显式deps.但是,您只能在此处将deps添加到同一项目或子项目中的目标; 在我的情况下,我有应用程序和图书馆项目作为工作场所兄弟姐妹.
  • 如果我在主构建之前手动构建每个库,一切都很好.

更新:

我刚刚想出了一个解决方法,即将所有deps的目标添加到主应用程序方案的"构建"部分.我之前尝试过这个但没有成功,但没有意识到我可以在列表中拖动目标以获得正确的构建顺序.现在,构建在正确的顺序中发生,无论是在干净之后,还是在库或主应用程序源更改之后.

我在这里留下问题,因为手动整理构建订单肯定不是必需的.如何设置东西会有问题.

xcode build xcode4

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

如何检测UICollectionView中单元格的双击

我想响应UICollectionView中单元格的双击,并具有双击操作取消单元格选择.

这就是我尝试过的:

UITapGestureRecognizer *tapRecogniser = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture:)];
tapRecogniser.numberOfTapsRequired = 2;

 for (UITapGestureRecognizer *recogniser in [self.collectionView gestureRecognizers]) {
    [recogniser requireGestureRecognizerToFail:tapRecogniser];
}

[self.collectionView addGestureRecognizer:tapRecogniser];
Run Code Online (Sandbox Code Playgroud)

也就是说,如果我的双击手势识别器成功,我试图让默认手势识别器失败.

这似乎不起作用,因为我的集合视图委托collectionView:didSelectItemAtIndexPath:仍然在双击后被调用


关于Apple的UICollectionViewController文档的注释

Apple的文档在这一点上有误导性,声称默认手势识别器是UITapGestureRecognizer子类的一个实例,所以可以很容易地选择它[recogniser isKindOfClass:[UITapGestureRecognizer class]].不幸的是,这是一个错误.

objective-c uikit ios uitapgesturerecognizer uicollectionview

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

如何更改OCMock存根的返回值?

看来我第一次在OCMock存根上添加andReturnValue时,返回值就是一成不变的.例如:

id physics = [OCMockObject niceMockForClass:[DynamicPhysicsComponent class]
Entity *testEntity = [Entity entityWithPhysicsComponent:physics];
CGPoint velocity1 = CGPointMake(100, 100);
CGPoint velocity2 = CGPointZero;
[[[physics stub] andReturnValue:OCMOCK_VALUE(velocity1)] getCurrentVelocity];
[testEntity update:0.1];
[[[physics stub] andReturnValue:OCMOCK_VALUE(velocity2)] getCurrentVelocity];
[testEntity update:0.1];
Run Code Online (Sandbox Code Playgroud)

在[testEntity update]中调用stubbed方法.但每次stubbed方法返回velocity1值,所以我猜第二次尝试设置方法的返回值是不值得的.

有没有办法在OCMock中做到这一点?

unit-testing ocmock

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

为什么子类@property没有相应的ivar隐藏超类ivars?

以下似乎很简单.有一个带有ivar的超类,以及一个访问(@protected)超类ivar的子类:

// Testclass.h    
@interface TestClass : NSObject {
    NSString *testIvar;
}
@end

//TestClass.m
@implementation TestClass
@end

//TestSubclass.h
@interface TestSubClass : TestClass {
}

@property (nonatomic, retain) NSString *testProperty;
- (void) testMethod;

@end

//TestSubclass.m    
#import "TestSubClass.h"
@implementation TestSubClass

@synthesize testProperty;

- (void) testMethod{
    NSLog(@"The value was: %@", testIvar);
}
@end
Run Code Online (Sandbox Code Playgroud)

简单而正确 - 看似足够.但是,尝试编译(对于iOS 4.2 SDK,使用GCC 4.2)会产生指向NSLog行的错误:'testIvar unclared'.

我是Objective-C的新手,但不能为我的生活看到为什么这应该是一个错误.注释掉testProperty的东西,它编译好了.似乎在没有相应的ivar的子类中添加合成属性实际上隐藏了一个不相关的超类ivar.

任何人都可以告诉我这里发生了什么?相关的,编译错误是否可以预见?(预见它可以节省我一些时间和挫折).

objective-c ios4 ios

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

有可用来源的精心制作的完整iOS应用程序的任何示例?

我想查看一些非常好的iOS应用程序,看看它们是如何组合在一起的.我已经指定了"完整",因为我对战略中的当前目的比对战术更感兴趣(但希望代码也会在战术上做得很好)."完整"不一定意味着"大".

我自己最初的优先事项是整体设计是可可惯用的(即充分利用Apple为我们提供的东西),并强调类在相关设计约束内尽可能分离.但我对任何能够为特定的公开可用代码库提供充分理由的答案感兴趣,值得仔细研究.

编辑:虽然我主要关注的是应用程序,但图书馆的指导性示例也可能会引起人们的兴趣.

architecture objective-c decoupling ios

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

有没有一种通用的方法来查找适用于View的样式?

一般来说,为了改变任何UI元素的外观,您是如何找到要覆盖的主题属性的?

目前,我依赖于遍历框架源文件:values.xml中的主题定义(通常是支持库变体),attrs.xml中的属性定义以及R.styleable类文档.

但这完全是命中注定.这不仅耗费时间,而且有时我会完全错过,例如我一直在努力寻找如何在DatePickerDialog的OK和Cancel按钮中更改文本样式.您可以随意使用它作为示例,但如果您这样做,请概述您的发现过程.我正在寻找的答案是如何发现任何UI元素的应用样式,

还是没有确定的方法可以找到答案?你只需要知道吗?

android android-styles

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

LLDB相当于gdb的未来发展?

future-break objc_exception_throw在.gdbinit中保留一个(因为我通常在AppCode中调试,它还没有GUI方法来配置objective-c异常的中断).

是否有LLDB的等价物?

objective-c lldb appcode

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