小编Ben*_*tto的帖子

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
查看次数

向零舍入到最接近的 0x50 的简短按位方法?

我正在尝试修补旧的 8 位汇编程序例程(它恰好是 M6800,但这并不是真正特定于机器的)以获取 16 位值并向下舍入到最接近的 0x50 (dec 80) 倍数。当前代码只需对低字节执行 1 操作即可截断到最接近的32AND 0xE0,这当然会将低 5 位清零,并在不触及高字节的情况下获得正确的结果。

这是在进行一些屏幕数学运算,因此输入值将仅在0xE000到的范围内0xE7CF。由于 80 显然不是 2 的幂,所以我不能简单地做到这一点,但考虑到这是一个补丁,我试图将指令数量保持在最低限度,理想情况下不添加通用除法或查找表等。

我很困惑,怀疑没有特别聪明的方法来实现这一点。80 不是 2 的幂,而是 16 的倍数……这对我一点帮助都没有吗?任何见解、指示等都将受到赞赏。谢谢。

assembly bit-manipulation rounding 6800

8
推荐指数
3
解决办法
250
查看次数

"仅数据"Objective-C对象的更好替代方案?

我经常遇到这样的设计选择并且有点挣扎; 我正在寻找其他一些观点.

我经常想要保留列表,或者传递基本上只是一组值的状态块.值往往是原始类型:浮点数,NSTimeIntervals,CGPoints等.

我的第一个倾向通常是为这些属性集创建C结构,例如

typedef struct _STATE {
    float foo;
    NSTimeInterval elapsed;
    CGPoint point;
} STATE;
Run Code Online (Sandbox Code Playgroud)

等等

但C结构不具有天然可可集合类(发挥很好NSArray,NSSet,NSDictionary),并利用他们的overmany到的状态跟踪的感觉就像很多在运行对我的可可友好代码-其余的粮食我最终并直接管理结构数组,并在消息等中传递结构指针.

另一方面,由于原始性能不一定是关键的,我可以将这些值编码为NSDictionary,将它们全部包装在NSValue或中NSNumber,但结果语法几乎不简洁,有点脆弱,需要运行时的类型和名称正确性插入和查找:

[stateDict setObject:[NSNumber numberWithFloat:foo] forKey:@"bar"];
... 
float something = [[stateDict objectForKey:@"bar"] floatValue];
Run Code Online (Sandbox Code Playgroud)

并且某些类型(如NSTimeInterval)只能与某些(可论证的)hackery一起使用(在这种情况下,类型转换为double).

最后,我可以创建仅限数据的容器对象,包含私有成员数据,只有getter/setter.(这些在Java中被称为"bean".)这些比字典更容易访问,更多Cocoa而不是结构,但对我来说感觉有些过分,特别是如果我只需要它们作为用于状态管理的"内部类"单个对象类型的内部.

如何,伟大的Cocoa编程公众,这样做?

cocoa design-patterns objective-c nsdictionary cocoa-design-patterns

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

OpenGL中的渐变"斜接"在连接处显示接缝

我正在围绕GL中的一些2D工作做一些非常基本的实验.我想在矩形区域周围画一个"相框".我希望框架一直有一致的渐变,所以我用几何形状构造它,看起来像四个四边形,框架的每一边一个,逐渐变细以形成有效地具有斜接连接的梯形.

顶部坐标在"内部"和"外部"矩形上是相同的,并且所有内部和外部的颜色都是相同的,所以我希望看到边缘处的完美混合.

但请注意下图中的连接处角落似乎有一个"接缝",它应该比它应该更轻.

我觉得我在数学中缺少概念性的东西来解释这一点.这个神器是否是梯度斜率的结果?如果我将所有颜色改为不透明蓝色(比方说),我会得到一个完美的蓝色实心框架.

更新:下面添加的代码.对不起有点啰嗦.使用2个三角形风扇作为梯形而不是四边形.

谢谢!

替代文字

glClearColor(1.0, 1.0, 1.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);

glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);

// Prep the color array. This is the same for all trapezoids.
// 4 verts * 4 components/color = 16 values. 
GLfloat colors[16];
colors[0] = 0.0;
colors[1] = 0.0;
colors[2] = 1.0;
colors[3] = 1.0;
colors[4] = 0.0;
colors[5] = 0.0;
colors[6] = 1.0;
colors[7] = 1.0;

colors[8] = 1.0;
colors[9] = 1.0;
colors[10] = 1.0;
colors[11] = 1.0;
colors[12] = 1.0;
colors[13] = 1.0;
colors[14] …
Run Code Online (Sandbox Code Playgroud)

opengl gradient

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

在给定点的情况下,找到与已知直线相交的直线

这是基本的图形几何和/或触发,我觉得它很愚蠢,但我不记得这是怎么回事.所以:

  1. 我有一条由两点(x1,y1)和(x2,y2)定义的线.
  2. 我有第三个点(xp,yp)位于其他地方.

我想计算位于#1线上某处的点(x',y'),这样当与#2点连接时,会创建一条到第一行的新垂线. 在此输入图像描述

谢谢.

graphics geometry

7
推荐指数
3
解决办法
3079
查看次数

在NEON float32x4_t中总计3个通道

我正在使用ARM NEON内在函数(llvm,iOS)向量化内循环.我一般都在使用float32x4_ts.我的计算结束时需要对这个向量中的四个浮点数中的三个进行求和.

此时我可以回到C浮点数并vst1q_f32获得四个值并将我需要的三个加起来.但我认为如果有一种方法可以直接用一两条指令中的向量来实现它,那么只需抓住一条单一的通道结果,但我无法弄清楚这样做的任何明确路径.

我是NEON编程的新手,现有的"文档"非常可怕.有任何想法吗?谢谢!

arm simd intrinsics neon ios

7
推荐指数
2
解决办法
2522
查看次数

抑制链接器警告:"来自Y的类别中的元方法X覆盖Z中类的方法"

我故意使用类别来覆盖我知道已经在主类上实现的方法.我知道这通常是设计薄弱的标志 - 拜托,没有讲座 - 但在这种情况下我不能干净地继承.我知道调酒也可能是一种选择.

但是现在,我怎么能抑制这个警告呢?llvm抛出一个编译器警告我可以禁用(diagnostic ignored "-Wobjc-protocol-method-implementation").但随后链接器也抱怨.

这提出了一个类似的问题,但正在寻找一个不同的答案.如何告诉链接器不要抱怨?

谢谢.

linker objective-c ios objective-c-category

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

如何声明@property但阻止其ivar被创建?

我有一个类A,它暴露了一种获取和设置类型对象的方法Foo.用属性的说法,我通常在界面中声明:

@property (nonatomic, strong) Foo * foo;
Run Code Online (Sandbox Code Playgroud)

这(在现代的ObjC中)生成存取器和ivar,_foo用于存储.

如果我想在访问器中进行自定义工作,我可以自己实现其中一个或两个.但如果我不仅想做定制工作,我实际上不想要ivar呢?换句话说,我正在使用Foo对象做其他事情,比如将它来回传递给我组成的另一个内部对象.我实际上并不需要保持储存foo在实例A都没有.

看来我有两个选择:

  1. 声明属性,实现两个访问器,并简单地忽略编译器为其创建存储的事实_foo,并且从不使用它.
  2. 明确地声明我的访问者:- (Foo *)foo并且- (void)setFoo:(Foo *)foo在界面中,就像我以前在现代的ObjC中一样.

第一个似乎在运行时不够优雅,第二个似乎在声明中不太优雅(我可能现在混合使用属性和类似属性的访问器).

有没有办法申报一个财产,并将其作为纯粹的声明?

cocoa objective-c

7
推荐指数
2
解决办法
327
查看次数

Javascript for Automation(OSA)Yosemite:某些StandardAddition命令的特权错误

在Yosemite中,现在可以使用JavaScript进行自动化以及Applescript.我在使用某些StandardAdditions命令时遇到问题.例如,从Contacts应用程序,我可以使用displayAlert,但不能使用displayNotification.两者都在StandardsAdditions字典中.通过ScriptEditor运行这些命令时,我没有遇到这些问题.

对于在运行时失败的命令:错误-10004:发生了权限违规.

JavaScript中的示例代码:

ScriptEditor = Application("Script Editor");
ScriptEditor.includeStandardAdditions = true;

app = Application("Contacts"); // or e.g. "Calendar", "System Events", "Finder"
app.includeStandardAdditions = true;

// -- testing: displayAlert()
ScriptEditor.displayAlert("Hello world!"); 
app.displayAlert("Hello world!"); // success, no privilege error

// -- testing: displayNotification()
ScriptEditor.displayNotification("Hello world!"); 
//app.displayNotification("Hello world!"); // Error -10004: A privilege violation occurred.

// --- testing: say()
ScriptEditor.say("Hello world!");
//app.say("Hello world"); // Error -10004: A privilege violation occurred.

// --- testing: beep()
ScriptEditor.beep(1); …
Run Code Online (Sandbox Code Playgroud)

javascript applescript osx-yosemite javascript-automation

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