小编Ben*_*tto的帖子

我可以将UIToolbar项目居中吗?

我在UIToolbar上放了一个标签(根据这个提示:将UILabel添加到UIToolbar).

但是工具栏的左侧有一个按钮,因此灵活的空间会将标签从中心抛出,这就是我想要的位置.我可以以某种方式居中这个工具栏项目,以便它保持在工具栏的中心?

(已经尝试平衡按钮与虚拟固定空间,没有骰子.)

谢谢!

iphone uitoolbar uibarbuttonitem uilabel

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

对于具有不同上下文的多个线程,OpenGL线程是否安全?

我知道在线程之间共享一个上下文是坏消息.我知道当主线程上的GL没有发生任何事情时,我可以在辅助线程上安全地创建和使用带有屏幕外帧缓冲的上下文.

我还没有找到一个明确的答案,我是否可以安全地在两个不同的线程上创建两个上下文(例如,绘制到屏幕的主线程,以及执行屏幕外绘制工作的辅助线程)并且拥有它们同时进行GL函数调用.

换句话说,只要上下文不同,两个线程可以"共享"C API,从而"共享"GPU吗?或者这本身就是不可分享的东西?或者这是特定于实现的?

在iOS上专门询问OpenGL ES,但这可能是一个普遍的GL问题.

iphone multithreading opengl-es ios

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

使用NSCopying复制私有实例变量的最佳实践

我可能会遗漏一些明显的东西,但我正在我的一个对象上实现NSCopying.该对象具有未通过getter公开的私有实例变量,因为它们不应在对象外部使用.

在我的实现中copyWithZone:,我需要alloc/init新实例,还要设置其状态以匹配当前实例.我显然可以从内部访问当前的私有状态copyWithZone:,但我无法将其设置为新对象,因为该状态没有访问器.

有没有一种标准的方法来保持数据隐私的完整性?

谢谢.

cocoa instance-variables nscopying

10
推荐指数
2
解决办法
1379
查看次数

UIGestureRecognizer中的多个触摸顺序

似乎无法保证在循环UIGestureRecognizer的方法[locationOfTouch:inView:]时出现UITouches的顺序.特别:

for (int i = 0; i < [recognizer numberOfTouches]; i++) {
  CGPoint point = [recognizer locationOfTouch:i inView:self];
  NSLog(@"[%d]: (%.1f, %.1f)", i, point.x, point.y);
}
Run Code Online (Sandbox Code Playgroud)

人们会认为索引为0的点将是第一个UITouch,或者是第一个被释放的点,但通常2个触摸的顺序是混合的.有谁知道如何测试这些事件的顺序?遗憾的是,无法访问UITouch对象本身(使用时间戳).

此外,文档中不保证触摸-locationOfTouch:inView:始终处于可靠的顺序.任何人都可以确认或否认这个吗?

cocoa-touch uikit uigesturerecognizer ios

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

将旋转变换设置为UIView或其图层似乎不起作用?

我试图让我的屏幕中的一个子视图(由一个视图控制器拥有)在设备旋转时旋转.我的视图控制器允许旋转,我正在尝试将90度旋转应用于一个"静止"视图以抵消整体旋转.

问题是,一切似乎都在旋转,变换似乎没有做任何事情.我试图对视图进行仿射变换,并在图层上进行三维变换(下图).该方法被调用,但我从未看到视觉差异.

有什么想法吗?谢谢.

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration
{
    CALayer *layer = stuckview.layer;
    layer.transform = CATransform3DMakeRotation(90, 0, 0, 1);
}    
Run Code Online (Sandbox Code Playgroud)

iphone rotation calayer uiview

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

我可以在没有创建方案的情况下在Xcode 4中选择配置吗?

我将Xcode 3项目升级到Xcode 4.默认方案构建我的Debug配置.如果我想构建Release(当然已经存在的配置)或Ad-Hoc等,是否正确处理它以创建新的Scheme?(似乎出乎意料的是,除了Debug之外,我必须为我的5个现有配置中的每一个配置手动创建一个新方案.)

还是有更轻量级的方式?如果我从根本上误解了某些事情,请随意让我直截了当.

(我已经阅读了Xcode 4过渡指南,但我似乎没有找到关于最佳实践的明确指示,这意味着我可能对概念上的某些内容不清楚.)

谢谢.

iphone xcode xcode4

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

从autoreleasepool块中设置NSError outparam的正确方法是什么?

我有这样的方法:

- (void)processAThing:(id)thing error:(NSError * __autoreleasing *)error
{
    @autoreleasepool {

          // Start processing.

          // Find some partway through error..
          if (error) {
              *error = [NSError errorWithDomain...];
              return NO;
          }

          // More processing.
    }
}
Run Code Online (Sandbox Code Playgroud)

这是破坏和崩溃,因为NSError是自动释放的,并且当返回发生时,池被耗尽,所以调用者得到的东西现在是假的.

我知道我可以重新设计方法,所以我收集autorelease块之外的所有错误情况,但我想知道在这种情况下是否有正确的方法来处理错误对象.我不能在池块之​​外分配/初始化推测性NSError,因为域和代码属性是只读的(我仍然认为当方法返回时引用会消失).

如果我将方法声明更改为:它解决了这个问题:

- (void)processAThing:(id)thing error:(NSError * __strong *)error
Run Code Online (Sandbox Code Playgroud)

但后来我需要以非标准的方式在呼叫站点上大惊小怪,这似乎让调用者为我的内部自动释放池付出了代价.

有什么想法吗?谢谢.

objective-c autorelease ios automatic-ref-counting

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

在Yosemite上使用JavaScript for Automation列出文件夹中的所有文件

我正在尝试将一些旧的Applescript移植到新的JavaScript语法中.

事情似乎非常直接,所以:

tell application "System Events" to keystroke "t" using command down
Run Code Online (Sandbox Code Playgroud)

成为:

System = Application('System Events');
System.keystroke("t", {using: "command down"})
Run Code Online (Sandbox Code Playgroud)

但是我不能为我的生活找出如何列出特定位置的文件.在AppleScript中,要返回目录中的文件列表/usr,您可以:

tell application "System Events" to set fileList to name of items in folder "/usr"
-- > {"bin", "include", "lib", "libexec", "local", "sbin", "share", "standalone", "X11"}
Run Code Online (Sandbox Code Playgroud)

但是我不能为我的生活弄清楚如何在Javascript中做到这一点.

System = Application('System Events')
myPath = Path("/usr")

fileList = System.items(myPath) 
-- > message not understood

fileList = System.folder(myPath)
-- > message not understood

fileList = System.diskItems(myPath)
-- > []

fileList …
Run Code Online (Sandbox Code Playgroud)

javascript applescript automation osx-yosemite javascript-automation

9
推荐指数
2
解决办法
4388
查看次数

UIDevice currentDevice的"orientation"始终为null

根据标题.调用[[UIDevice currentDevice] BeginGeneratingDeviceOrientationNotifications]无效.

DidRotateToInterfaceOrientation等事件工作正常,但我需要能够任意轮询设备方向.

我该如何修复/做到这一点?

长话故事:我在每个选项卡上都有一个带有导航控制器的选项卡应用程序.第一个选项卡的根视图是当方向变为横向时全屏显示的图形; 然而,每当视图出现时都需要检查,因为方向改变可能在其他地方发生,所以我希望在出现此视图时轮询方向状态.

iphone objective-c orientation uidevice interface-orientation

8
推荐指数
2
解决办法
8661
查看次数

在Xcode中调试时智能Obj-C变量内容?

在默认(即我的)配置中,Xcode在其变量的调试器窗口中有点无用,特别是那些常见的Objective-C集合.

调试器似乎通常希望在展开某个对象时显示底层的Obj-C结构,所以我正在查看isas和类层次结构.

但是我在这里几乎总是想要的是对象本身具有语义意义的东西.例如NSDictionary,我理想地想要查看键/值列表.如果这些键和值是,例如NSStrings,我只想看到字符串值,而不是复杂的嵌套对象.这同样适用于NSSetS,NSArrays和内部的字节NSData.并且NSString,虽然通常在摘要列中获取它们的字符串表示,但是当它们很长时(例如,在列中看起来太长而不能滚动的路径名)时,我们无法查看 - 当我双击时它,我得到显示模板字符串,所以我不能选择/复制它.

我最近花了一些时间在Eclipse上调试Java,并且由于它的所有缺点,Eclipse知道所有Java集合,并且在字符串或集合的内容中有一个简单的单行转储,或者在调试器中找到它时的任何内容.

有没有办法在Xcode中获得这个?我错过了一些明显的东西,还是应该潜入显示模板系统?我知道那里有一些支持,因为NSArrays似乎得到一种特殊的列表格式,NSDictionaries获得"2键/值对"摘要等.

编辑:可以放入GDB以获取更多关于对象的数据.令我感到沮丧的是,GDB po在an上的行为NSDictionary给出了我期望从GUI调试器中获得的那种非常有用的输出.可以在没有上下文切换到控制台的情况下复制吗?

我非常喜欢Xcode环境,但是我一直使用的对象几乎完全不透明,这确实阻碍了调试时间.谢谢.

debugging xcode objective-c

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