我目前正在使用html5和jQuery for iPad Safari开发一个Web应用程序.我遇到了一个问题,当我向下滚动它们时,大的滚动区域会导致屏幕外的元素在延迟后出现.
我的意思是,如果我有一行图像(或者甚至是带有渐变的div)在屏幕外,当我向下(或向上)向下滚动时,预期的行为是元素在屏幕上显示为我正在滚动它.
然而,我所看到的是,直到我将手指从屏幕上抬起并且滚动条完成其所有动画时才会出现该元素.
这对我来说是一个非常明显的问题,使整个事情看起来不稳定,尽管事实并非如此.我猜测iPad Safari正在尝试做一些事情以节省内存.有什么办法可以防止这种不稳定的发生.此外,如果有人能够了解iPad Safari实际上正在尝试做什么,我也将不胜感激.
我有一个关于自定义圆角和文本背景颜色的问题UIView.
基本上,我需要在自定义UIView中实现这样的效果(图像附加 - 注意一侧的圆角):

我在考虑使用的方法是:
但是,我不确定这是否是唯一的解决方案(或者就此而言,这是否是最有效的解决方案).
使用a UIWebView不是一个选项,所以我必须在自定义中执行UIView.
我的问题是,这是最好的使用方法,我是否走在正确的轨道上?或者我错过了重要的事情或错误的方式?
我对Objective-C中的线程安全性有疑问.我已经阅读了其他几个答案,一些Apple文档,但仍然对此有一些疑问,所以我想问我自己的问题.
我的问题有三个:
假设我有一个数组, NSMutableArray *myAwesomeArray;
折叠1:
现在纠正我,如果我错了,但从我的理解,使用@synchronized(myAwesomeArray){...}将阻止两个线程访问相同的代码块.所以,基本上,如果我有类似的东西:
-(void)doSomething {
@synchronized(myAwesomeArray) {
//some read/write operation on myAwesomeArray
}
}
Run Code Online (Sandbox Code Playgroud)
那么,如果两个线程访问相同的方法相同的时间,代码块将是线程安全的.我猜我已经理解了这一部分.
折叠2:
如果myAwesomeArray被不同方法的多个线程访问,我该怎么办?如果我有类似的东西:
- (void)readFromArrayAccessedByThreadOne {
//thread 1 reads from myAwesomeArray
}
- (void)writeToArrayAccessedByThreadTwo {
//thread 2 writes to myAwesomeArray
}
Run Code Online (Sandbox Code Playgroud)
现在,两个方法同时由两个不同的线程访问.我如何确保myAwesomeArray不会出现问题?我是否使用类似NSLock或NSRecursiveLock的东西?
折3:
现在,在上面的两个案例中,myAwesomeArray是一个内存中的iVar.如果我有一个数据库文件,我并不总是留在内存中怎么办?databaseManagerInstance每当我想执行数据库操作时,我都会创建一个,并在完成后释放它.因此,基本上,不同的类可以访问数据库.每个类都创建自己的实例DatabaseManger,但基本上,它们都使用相同的单个数据库文件.在这种情况下,如何确保数据不会因竞争条件而损坏?
这将帮助我清除一些基本原理.
我有一个关于苹果正在使用中它的数学问题在这里说话例子.
一点背景:我知道AVAudioRecorder和AVAudioPlayer返回的平均功率和峰值功率以dB为单位.我也理解为什么RMS功率以dB为单位,需要将其转换为放大器pow(10, (0.5 * avgPower)).
我的问题是:
Apple使用这个公式来创建它的"Meter Table"
MeterTable::MeterTable(float inMinDecibels, size_t inTableSize, float inRoot)
: mMinDecibels(inMinDecibels),
mDecibelResolution(mMinDecibels / (inTableSize - 1)),
mScaleFactor(1. / mDecibelResolution)
{
if (inMinDecibels >= 0.)
{
printf("MeterTable inMinDecibels must be negative");
return;
}
mTable = (float*)malloc(inTableSize*sizeof(float));
double minAmp = DbToAmp(inMinDecibels);
double ampRange = 1. - minAmp;
double invAmpRange = 1. / ampRange;
double rroot = 1. / inRoot;
for (size_t i = 0; i < inTableSize; ++i) {
double decibels = i …Run Code Online (Sandbox Code Playgroud) 我有一个关于Subclassing和Class方法的问题.
我有一个基类MyBaseClass,它有一个方便类方法
+ (id)giveMeAClassUsing:(NSString *)someParameter;
MyBaseClass 不是单身人士.
现在,我希望创建一个子类MyBaseClass,让我们称之为MyChildClass.我希望也有相同的类方法MyChildClass.另外,我还希望MyChildClass在我这样做时初始化一个实例变量.
会做这样的事情:
+ (id)giveMeAClassUsing:(NSString *)someParameter {
MyChildClass *anInstance = [super giveMeAClassUsing:someParameter];
anInstance.instanceVariable = [[UIImageView alloc] initWithFrame:someFrame];
return anInstance;
}
Run Code Online (Sandbox Code Playgroud)
有效吗?
感谢您的所有帮助(提前),以及解决我的困惑和澄清一些概念!
干杯!
ios ×5
objective-c ×4
audio ×1
core-audio ×1
css ×1
html5 ×1
inheritance ×1
ipad ×1
oop ×1
uiview ×1