我在摸不着头脑.
我有一个中等成功的应用程序,除了完整版本之外还有免费的"LITE"版本.这是一个实用程序应用程序,而不是具有级别的游戏,我无法弄清楚Apple将接受Lite版本的内容.这是一个问题的原因是我已经将两个代码库与不同的目标结合在一起,我的新改进的Lite版本也将与iPad兼容.
版本有两个基本的区别.在lite版本中,显示的数据仅显示当天,而完整版本允许用户选择任何日期.此外,其中一个数据屏幕详细显示了3个数据点,而完整版显示了更多.Lite版本本身功能完善,没有灰色功能.
我想要做的是使用精简版数据屏幕上的备用空间来解释完整版本中有更多数据可用并提供升级按钮,但我无法弄清楚Apple是否会将其归类为"追加销售" "(我还要提到完整版本怎么样?)并且从阅读新的应用程序商店评论指南中,我很失望地注意到库比蒂诺在这方面似乎没有进一步的清晰度.我从Apple找到的所有示例都是具有附加级别的游戏,这与"实用程序"应用程序不匹配.
关于什么是不允许的和最不允许的,最近有什么建议吗?我知道没有使用灰色功能并且唠叨用户 - 但是其中一个选项卡上的升级按钮(在弹出窗口中的iPad的情况下)是否算作唠叨?我是否可以提及高级版本中的其他功能,还是算作追加销售?如果没有,我能说些什么呢?
线索欢迎!
我有一个完整的应用程序购买解决方案,但我想知道我是否正确处理错误.我使用类似于Apple示例的代码处理错误;
- (void) failedTransaction: (SKPaymentTransaction *)transaction
{
if (transaction.error.code != SKErrorPaymentCancelled)
{
// Optionally, display an error here.
}
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
}
Run Code Online (Sandbox Code Playgroud)
但我的问题是 - 商店工具包是否会向用户显示相关错误(无法连接,付款拒绝等)或我是否需要始终处理此问题?从测试看来,当storekit工作正常时,它确实自己处理错误,所以我可以默默地转储它们(好吧,实际上我们将它们记录在另一台服务器上).
但是,当storekit沙箱正在播放时,我们会收到指示问题的随机错误,并且没有来自storekit本身的警报.
你们对错误做了什么?您是否始终提醒用户,或者最终是否重复了storekit已经提供的警报.
谢谢罗杰
我在ubuntu上运行couchdb 1.0.1并且一切正常 - 除了我刚刚看到我的日志文件不存在.他们似乎已经有近一年了,但公平地说我还没有真正使用过这个系统,因为它是我刚刚再次选择的项目的试验台.
/ var/log/couchdb包含2个文件.一个旧的(很多个月!)couch.log.1和一个大小为0的couch.log - 这是可疑的.我删除了旧文件,现在尝试重新启动沙发,但日志文件固执地保持不存在!
我已经重新启动了沙发
/etc/init.d/couchdb restart
Run Code Online (Sandbox Code Playgroud)
但没有快乐.
我的local.ini文件有这个条目;
[log]
level = debug
file = /var/log/couchdb/couch.log
Run Code Online (Sandbox Code Playgroud)
/ var/log/couchdb由couchdb拥有并且在groupdb组中,因此我认为这不是权限问题.服务器上也有足够的磁盘空间.
我也沮丧地重新启动了服务器 - 没有区别.
我如何说服couchdb再次开始记录任何东西?它成为一个问题的原因是我试图推出一些独立的附件,但只有小的附件工作,所以我试图查看我的(不存在的)日志文件,看看问题可能是什么.
有任何想法吗?
我有一个奇怪的记忆问题,我遇到了解决问题,并希望得到一些关于其他地方的建议.
我有的程序(iPhone App)有一个功能,它基本上下载大量文件,处理那些JSON,并将其余的存储到磁盘.JSON处理是CPU密集型的,每个文件可能需要几秒钟,所以我有一个NSOperationQueue,maxConcurrency限制为1,可以处理所有繁重的工作,还有一个队列管理要下载的多个文件.
自iOS5问世以来,应用程序在完成下载序列时遇到了问题而没有崩溃,到目前为止我所尝试的是;
1)更改performSelectorOnBackgroundThread JSON处理以使用单个NSOperationQueue,以限制使用大对象的后台线程数.
2)在创建多个大型瞬态对象的循环中添加了NSAutoReleasePools.
3)刷新sharedURLCache以确保文件不会在系统缓存中闲置.
4)使用NSKeyedArchiver将JSON对象存储到磁盘并在线程之间传递文件名而不是实际对象,以再次尝试减轻当前使用的保留对象的数量和大小.
所有这些起初似乎都有所不同,当我查看内存分配时,我现在已经将峰值使用率从刚刚超过20MB(因此难怪它崩溃)降至10MB以下,但应用程序却是像以前一样仍然以低内存崩溃.
我正在试图追踪正在吃东西导致应用程序崩溃的内容,在这种情况下,我遇到了真正的问题,说服仪器告诉我任何有用的东西.
这是一个典型的跟踪(在运行iOS 4.3.5的iPhone 3GS上)

您可以看到PEAK使用量超过7MB并且不久之后,您可以看到2个与低内存相关的标志,然后是低内存紧急,然后应用程序很快就会终止.
如果我使用内存监视器,崩溃的原因似乎很清楚 - 物理内存耗尽 - 请看下面的浅绿色轨迹.低内存警告(不足为奇)与物理内存不足相关.

没有泄漏显示FWIW(我在其他运行中已经完成了).
它不是图像缓存或NSURLConnection缓存,我唯一能想到的是,可能有一些未被检测到的漏洞......但是我遇到了识别它们的问题,因为如果我点击所有分配看到它现场的对象,然后执行命令-A全部选择它们(为了将它们粘贴到电子表格中以查看内存似乎在哪里),在我点击命令-C来复制它们,仪器沙滩球和永远不会恢复.
我真的无法弄清楚发生了什么.有没有人对如何说服乐器向我展示一些有关使用这种记忆的有用信息有一些建议?
对不起,我无法发布任何有意义的代码片段...希望这些乐器截图至少可以让您了解我来自哪里.
我正在开发一个带有故事板的iOS项目,遇到了一个我无法轻易解决的问题.
它是一个基本的viewcontroller,包含一个带有自定义单元格的tableview.我有5个原型单元,高度在70到160像素之间,这一切都很好 - 但我现在需要添加一些原型,我的问题是它们没有屏幕空间 - 所以我不能在设计上工作.
我想象有一种方法来布局故事板,使得原型单元可以显示在我想要的位置,而不是在视觉控制器内被视觉约束 - 这是相当有限的温和,但我无法弄清楚怎么做,文档似乎避免了这个问题.
这张图片有希望澄清 - 我想添加新的原型,但它们不适合VC框架,因此我无法编辑它们:-(

我确定我错过了一些明显的东西......但它可能是什么?
我有一个linux过滤器来从xcode项目中提取包含本地化字符串的所有行,并生成一个排序的唯一条目列表.过滤器工作正常,如下所示.
grep NSLocalized *.m | perl -pe 's/.*NSLocalizedString\((.+?)\,.*/$1/' | sort | uniq
Run Code Online (Sandbox Code Playgroud)
结果是一个看起来像这样的字符串列表
@"string1"
@"string2"
etc
Run Code Online (Sandbox Code Playgroud)
我现在需要做的是识别另一个文本文件中不存在的条目.所以想象我有一个包含的文本文件;
@"string1"
@"string3"
etc
Run Code Online (Sandbox Code Playgroud)
结果将是@"string2"因为它不存在于文件中
为了参数,该文件名为list.txt
我需要添加到我的过滤器中?我敢肯定我可以用grep做到这一点,但我的大脑失败了!
我正在针对iPhone应用程序的CI环境下运行自动化应用程序单元测试,并且一切正常,使用命令行,如;
xcodebuild -scheme "Tests" -configuration Debug -sdk iphonesimulator5.0
Run Code Online (Sandbox Code Playgroud)
这很好,但我现在想强制iPhone模拟器以Retina模式启动,而不是默认的标准模式.
我知道我可以使用硬件菜单选项切换它,但是我在无头集成服务器上运行它,所以没有那个选项.
我想做的是在命令行上以某种方式传递开关,告诉模拟器以Retina模式启动.
我乐观地尝试将SimulateDevice ="iPhone(Retina)"附加到xcodebuild命令,但这似乎不起作用.
这可能吗?我现在似乎无法找到办法.
如果不可能,我可以采取另一种方法吗?
continuous-integration xcodebuild ios retina-display ios-simulator
虽然我不会自己编写,但以下语句的预期结果是什么A(保证为零或正整数)大于1?
return A || 1;
在许多语言中,我希望A返回,除非值A为零,在这种情况下1将是.
我没有拿到我的C书,但我注意到实际上,价值1似乎总是被退回.这是编译器优化的结果还是给出了表达式的潜在歧义,是否返回值是非确定性的?
我发现在应用程序处于活动状态并正在运行时,永远不会交付已过期的自动续订订阅的续订,而是在应用程序从后台或启动时唤醒时.
换句话说,如果您正在使用该应用程序,并且订阅到期,则在用户继续使用该应用程序时,它将不会被传递到应用程序(假设它是自动续订和有效等).
Apple似乎没有记录此行为,其他任何有此经验的人都可以确认或以其他方式吗?
显然,人们可以检测到子已经过期,然后为用户提供检查其订阅状态的机会,并且恢复完成的订阅将会恢复新的订阅 - 但我只是想知道我们是否做错了,或者这个行为是正常.
谢谢.
ios ×4
iphone ×3
app-store ×1
c ×1
couchdb ×1
filter ×1
grep ×1
instruments ×1
linux ×1
memory ×1
memory-leaks ×1
objective-c ×1
perl ×1
prototype ×1
storekit ×1
storyboard ×1
uitableview ×1
xcodebuild ×1