我是UIImageView
在Interface Bulder的帮助下创建的.现在我想在其中放置标签(作为其子视图).在代码中,我可以键入类似的内容:[myUIImageView addSubview:myUILabel];
但是我可以在IB的帮助下完成吗?我找到了解决方案UIView
,但找不到类似的东西UIImageView
.
我根据"iPhone开发指南"创建了OCUnit测试.这是我要测试的类:
// myClass.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface myClass : NSObject {
UIImage *image;
}
@property (readonly) UIImage *image;
- (id)initWithIndex:(NSUInteger)aIndex;
@end
// myClass.m
#import "myClass.m"
@implementation myClass
@synthesize image;
- (id)init {
return [self initWithIndex:0];
}
- (id)initWithIndex:(NSUInteger)aIndex {
if ((self = [super init])) {
NSString *name = [[NSString alloc] initWithFormat:@"image_%i", aIndex];
NSString *path = [[NSBundle mainBundle] pathForResource:name ofType:@"png"];
image = [[UIImage alloc] initWithContentsOfFile:path];
if (nil == image) {
@throw [NSException exceptionWithName:@"imageNotFound"
reason:[NSString stringWithFormat:@"Image (%@) with path \"%@\" for …
Run Code Online (Sandbox Code Playgroud) 一切都运行良好,但在一些构建我得到了这个(当试图启动测试时):
无法加载"xctest路径"中的测试包,因为它是针对与当前运行的测试装备(以x86_64运行)不同的架构而构建的
我究竟做错了什么?我试图重建,清理,重新启动Xcode,重启OS X ......
我有NSOperationQueue
一些NSOperations
(NSInvocationOperations
特别是).此操作会进行一些计算并相应地(当然,通过performSelectorOnMainThread:...
)更改UI元素的状态,通常使用动画.
我的UI有UINavigationViewController和一些用于导航到另一个视图的按钮.因此,用户可以保留当前视图,而计算/动画仍在进行中.我需要的是以某种方式停止这一点,直到用户回到当前视图.
我找到的唯一解决方案是创建一些线程安全的布尔标志 - 并在所有线程中检查它(类似于:while!flag sleep_for_some_time;).还有更好的东西吗?
我使用OpenAL在我的应用程序中播放声音.当我使用Instruments
工具测试它时,它会发现泄漏:
LeakedObject = GeneralBlock-512
Size = 512 Bytes
Responsible Library = AudioToolbox
Responsible Frame = AU3DMixerEmbeddedInputElement :: Initialize()
堆栈跟踪:
0 libSystem.B.dylib malloc
1 libstdc++.6.dylib operator new(unsigned long)
2 libstdc++.6.dylib operator new[](unsigned long)
3 AudioToolbox AU3DMixerEmbeddedInputElement::Initialize()
4 AudioToolbox AU3DMixerEmbedded::SetProperty(unsigned long, unsigned long, unsigned long, void const*, unsigned long)
5 AudioToolbox AUBase::DispatchSetProperty(unsigned long, unsigned long, unsigned long, void const*, unsigned long)
6 AudioToolbox AUMethodSetProperty(void*, unsigned long, unsigned long, unsigned long, void const*, unsigned long)
7 OpenAL OALContext::InitializeMixer(unsigned long)
8 OpenAL …
Run Code Online (Sandbox Code Playgroud) 我的应用程序用于GLKit
渲染3D场景OpenGL ES
.
一切都很好,除了一件事.当我在iPad中启动我的应用程序并显示后台应用程序栏(单击双击"主页"按钮)然后更改设备的方向时,场景会被错误更新(最后渲染的图像只是拉伸以填充新的矩形).
我找到了原因.当出现后台应用程序栏时,GLKViewController's
paused
将YES
自动设置(应用程序委托接收-applicationWillResignActive:
),并且在此栏关闭之前不会进行渲染.
我在Apple指南(iOS的OpenGL ES编程指南/实现多任务感知的OpenGL ES应用程序)中找到了,在收到-applicationWillResignActive:
应用程序后应停止GL渲染或终止.所以似乎一切都好,除了轮换后的糟糕渲染:)
我检查了一些OpenGL游戏.当显示此栏时,它们也会"暂停",但不知何故正确更新设备旋转时暂停的场景.他们是如何做到这一点的?
苹果CoreGraphics.framework
,CGGeometry.h
:
CG_INLINE bool __CGSizeEqualToSize(CGSize size1, CGSize size2)
{
return size1.width == size2.width && size1.height == size2.height;
}
#define CGSizeEqualToSize __CGSizeEqualToSize
Run Code Online (Sandbox Code Playgroud)
他们为什么(Apple)比较花车==
?我不敢相信这是一个错误.所以你能解释一下吗?(我期待类似的东西fabs(size1.width - size2.width) < 0.001
).
如果没有使用垃圾收集器(iPhone环境),当我的应用程序终止时,我应该以某种方式释放共享对象(单身基于哪个)?
理论问题.
想象一下情况.我需要今天的日期和时间(不是现在,但今天 - 当天的开始).我可以使用以下代码执行此操作:
$now = time();
$today = date('Y-m-d H:i:s', mktime(0, 0, 0, date("m", $now), date("d", $now), date("Y", $now)));
Run Code Online (Sandbox Code Playgroud)
或这个:
$now = getdate();
$today = date('Y-m-d H:i:s', mktime(0, 0, 0, $now['mon'], $now['mday'], $now['year']));
Run Code Online (Sandbox Code Playgroud)
在我看过的大多数例子中,使用了第一种方法.问题很简单:为什么?第一个使用3个函数调用来获取月,日和年.
我有一个GLKit
基于应用程序,显示一些简单的对象.
一切正常,除了屏幕旋转,在此期间GLKView
不更新(-drawRect:
未调用).因此,在旋转期间,投影矩阵不会根据动态变化的屏幕尺寸进行更新,并且对象看起来很糟糕(拉伸).
ios ×3
iphone ×3
glkit ×2
memory-leaks ×2
addsubview ×1
comparison ×1
date ×1
equality ×1
geometry ×1
getdate ×1
glkview ×1
instruments ×1
ipad ×1
nsbundle ×1
nsoperation ×1
objective-c ×1
ocunit ×1
php ×1
resources ×1
subview ×1
uiimageview ×1
unit-testing ×1
xcode ×1
xctest ×1