根据标题.调用[[UIDevice currentDevice] BeginGeneratingDeviceOrientationNotifications]无效.
DidRotateToInterfaceOrientation等事件工作正常,但我需要能够任意轮询设备方向.
我该如何修复/做到这一点?
长话故事:我在每个选项卡上都有一个带有导航控制器的选项卡应用程序.第一个选项卡的根视图是当方向变为横向时全屏显示的图形; 然而,每当视图出现时都需要检查,因为方向改变可能在其他地方发生,所以我希望在出现此视图时轮询方向状态.
iphone objective-c orientation uidevice interface-orientation
在默认(即我的)配置中,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环境,但是我一直使用的对象几乎完全不透明,这确实阻碍了调试时间.谢谢.
我正在尝试修补旧的 8 位汇编程序例程(它恰好是 M6800,但这并不是真正特定于机器的)以获取 16 位值并向下舍入到最接近的 0x50 (dec 80) 倍数。当前代码只需对低字节执行 1 操作即可截断到最接近的32AND 0xE0,这当然会将低 5 位清零,并在不触及高字节的情况下获得正确的结果。
这是在进行一些屏幕数学运算,因此输入值将仅在0xE000到的范围内0xE7CF。由于 80 显然不是 2 的幂,所以我不能简单地做到这一点,但考虑到这是一个补丁,我试图将指令数量保持在最低限度,理想情况下不添加通用除法或查找表等。
我很困惑,怀疑没有特别聪明的方法来实现这一点。80 不是 2 的幂,而是 16 的倍数……这对我一点帮助都没有吗?任何见解、指示等都将受到赞赏。谢谢。
我经常遇到这样的设计选择并且有点挣扎; 我正在寻找其他一些观点.
我经常想要保留列表,或者传递基本上只是一组值的状态块.值往往是原始类型:浮点数,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
我正在围绕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) 这是基本的图形几何和/或触发,我觉得它很愚蠢,但我不记得这是怎么回事.所以:
我想计算位于#1线上某处的点(x',y'),这样当与#2点连接时,会创建一条到第一行的新垂线.

谢谢.
我正在使用ARM NEON内在函数(llvm,iOS)向量化内循环.我一般都在使用float32x4_ts.我的计算结束时需要对这个向量中的四个浮点数中的三个进行求和.
此时我可以回到C浮点数并vst1q_f32获得四个值并将我需要的三个加起来.但我认为如果有一种方法可以直接用一两条指令中的向量来实现它,那么只需抓住一条单一的通道结果,但我无法弄清楚这样做的任何明确路径.
我是NEON编程的新手,现有的"文档"非常可怕.有任何想法吗?谢谢!
我故意使用类别来覆盖我知道已经在主类上实现的方法.我知道这通常是设计薄弱的标志 - 拜托,没有讲座 - 但在这种情况下我不能干净地继承.我知道调酒也可能是一种选择.
但是现在,我怎么能抑制这个警告呢?llvm抛出一个编译器警告我可以禁用(diagnostic ignored "-Wobjc-protocol-method-implementation").但随后链接器也抱怨.
这提出了一个类似的问题,但正在寻找一个不同的答案.如何告诉链接器不要抱怨?
谢谢.
我有一个类A,它暴露了一种获取和设置类型对象的方法Foo.用属性的说法,我通常在界面中声明:
@property (nonatomic, strong) Foo * foo;
Run Code Online (Sandbox Code Playgroud)
这(在现代的ObjC中)生成存取器和ivar,_foo用于存储.
如果我想在访问器中进行自定义工作,我可以自己实现其中一个或两个.但如果我不仅想做定制工作,我实际上不想要ivar呢?换句话说,我正在使用Foo对象做其他事情,比如将它来回传递给我组成的另一个内部对象.我实际上并不需要保持储存foo在实例A都没有.
看来我有两个选择:
_foo,并且从不使用它.- (Foo *)foo并且- (void)setFoo:(Foo *)foo在界面中,就像我以前在现代的ObjC中一样.第一个似乎在运行时不够优雅,第二个似乎在声明中不太优雅(我可能现在混合使用属性和类似属性的访问器).
有没有办法申报一个财产,并将其作为纯粹的声明?
在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) objective-c ×5
cocoa ×2
ios ×2
6800 ×1
applescript ×1
arm ×1
assembly ×1
debugging ×1
geometry ×1
gradient ×1
graphics ×1
intrinsics ×1
iphone ×1
javascript ×1
linker ×1
neon ×1
nsdictionary ×1
opengl ×1
orientation ×1
osx-yosemite ×1
rounding ×1
simd ×1
uidevice ×1
xcode ×1