我在App Store中有一个iPhone应用程序.我几天前向应用程序商店提交了1.1,并选择了"Hold for Developer Release".我发现批准的版本中存在一个非常严重的错误.我需要拉这个二进制文件.
据我所知,Apple并不支持这一点.我已经给他们发了一封电子邮件,但当前版本中还有另一个需要修复的错误,所以时间至关重要.
我听说你可以在一个随机的国家(我没有销售)发布更新,然后在所有国家发布下一个(固定的)更新.如果我只在卢森堡发行1.1版,是从其他商店撤出的旧版本(1.0)吗?图表评级是否重置?我在图表中相对较高,我不想失去应用程序目前的动力.
在Apple支持拒绝批准的二进制文件之前,我正在寻找最快的替代方案.
我使用Apple的NSXMLParser类来加载数据.我有一个单独的框架来序列化我的数据.
我已经有足够的长字符,Word引号等出现在我的XML输出中并在解析时导致错误,这通常会导致数据丢失,因为解析器对这些字符的处理不当.
如果我将用户的输入作为NSString对象,我想将其转换为Base64(我有一个实用工具方法),然后将这些字节写入XML文件,代替NSString.我知道这可能会占用更多空间,但至少我不再需要处理验证问题了.
我的问题是,如何将NSData字节(看起来像<8d72...>在NSLog语句中)转换为NSString,而不使用编码来获取原始值.我希望将那些出现在日志语句中的实际字节转换为NSString.最后(加载此序列化数据时),如果您有NSString:
NSString *loadedData = @"8d72...";
Run Code Online (Sandbox Code Playgroud)
如何从这种形式转变为人类可读的格式?整个编码过程对我来说有点难以理解,但我认为这是确保在我的XML文件中正确保留奇怪的用户输入的一种非常可靠的方法.
我正在使用一个开源网络框架,使开发人员可以通过Objective-C中使用Bonjour的服务轻松进行通信.
现在有几行让我处于边缘状态,即使他们似乎从来没有在我测试的任何机器上造成任何问题,无论我是否运行32位64位版本我的申请:
int packetLength = [rawPacketData length];
[outgoingBuffer appendBytes:&packetLength length:sizeof(int)];
[outgoingBuffer appendData:rawPacketData];
[self writeToStream];
Run Code Online (Sandbox Code Playgroud)
请注意,发送的第一条信息是数据包的长度,这是非常标准的,然后发送数据本身.令我害怕的是长度的长度.一台机器是否假设一个int是4个字节,而另一台机器认为一个int是8个字节?
如果两种尺寸在不同的机器上可能不同,会导致什么?它取决于我的编译器还是最终用户的机器架构?最后,如果它是一个问题,我怎么能采用一个8字节的int并将其缩小到4字节以确保向后兼容?(因为我永远不需要超过4个字节来表示数据包的大小.)
我有一个Cocoa项目,我最近导入到Xcode 4.我注意到每个特定构建目标的两个Scheme,一个用于32位,一个用于64位.我的项目设置设置为"标准(32/64位英特尔)".
当我选择"我的Mac 32位"方案时,是否为32位计算机编译它,并选择"我的Mac 64位",然后为64位计算机编译它?如果我选择"我的Mac 64位"方案,它将不再在32位机器上运行吗?

我正在使用似乎是在协调写入块内部的NSFileVersion类方法的简单调用来removeOtherVersionsOfItemAtURL:进行某些iCloud冲突解决.
当我的设备进入"spaz模式"时,这是在少数设备上反复打开和关闭应用程序的技术术语,EXC_BAD_ACCESS内部会抛出异常.代码段:
- (void)compareVersionChanges:(NSFileVersion *)version {
if (![DataLoader iCloudPreferenceEnabled]) {
NSLog(@"Ignoring iCloud changes (version comparison) based on user preference");
return;
}
NSLog(@"compareVersionChanges");
dispatch_queue_t aQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(aQueue, ^(void) {
NSError *readError = nil;
NSFileCoordinator *coordinator = [[NSFileCoordinator alloc] initWithFilePresenter:(id)self];
[coordinator coordinateReadingItemAtURL:[version URL] options:0 error:&readError byAccessor:^(NSURL *newURL) {
DataContext *loadedContext = nil;
NSData *data = [NSData dataWithContentsOfURL:newURL];
NSError *e = nil;
loadedContext = [self convertXmlDataToContext:data error:&e];
if (e) {
NSLog(@"Done loading, error: …Run Code Online (Sandbox Code Playgroud) 我一直在尝试Java中的一些基本加密技术(我的首选编程语言),并有一个简单的例子,它使用模幂运算在两个客户端对之间生成共享密钥.
但是,考虑到共享的秘密,实际使用这个秘密加密/解密或加密/解密通过线路发送的数据有哪些简单实现(但是安全)的方法?
例如,如果我有字符串:
"So long, and thanks for all the fish"
Run Code Online (Sandbox Code Playgroud)
和共享的秘密(BigInteger):
1110278255331388386297296974141977
Run Code Online (Sandbox Code Playgroud)
如何通过线路以一种允许客户互相理解的方式发送字符串,同时确保没有共享秘密,没有中间人可以解释它?
我不是要求完成实现,只是想法或对可以使用的算法/技术的参考.我也避免依赖现有的程序或API(如公钥/私钥),因为这只是我自己教育目的的一个副项目.
我正在尝试在iOS项目中设置一个简单的OCMock单元测试,只是为了熟悉框架.
我有一个模拟的DataLoader类,即使我自己调用这个方法,我的期望也会失败:
- (void)testSimpleMocking {
// Mock the class
id mock = [OCMockObject niceMockForClass:[DataLoader class]];
// Override the 'dispatchLoadToAppDelegate:' to be a no-op
[[[mock stub] andReturn:nil] dispatchLoadToAppDelegate:[OCMArg any]];
// Expect the method to be called
[[mock expect] dispatchLoadToAppDelegate:[OCMArg any]];
// Call the method
[mock dispatchLoadToAppDelegate:nil];
// Verify
[mock verify];
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此测试时,我收到错误:
/Users/Craig/projects/MyApp/Unknown.m: -[MockingDataLoaderTest testSimpleMocking] : OCMockObject[DataLoader]:
expected method was not invoked: dispatchLoadToAppDelegate:<OCMAnyConstraint: 0x1a3d890>
Run Code Online (Sandbox Code Playgroud)
当我自己调用这个方法时,这怎么可能?
编辑:一个更复杂的案例:
- (void)testDataLoaderWaitsForDownload {
id mock = [OCMockObject niceMockForClass:[DataLoader class]];
id metadataItem = …Run Code Online (Sandbox Code Playgroud) 我想在我的应用程序中实现通知.该应用程序通过iCloud共享数据,通知保存在 iCloud共享数据中.(这是一个鞋盒应用程序.)
不幸的是,我没有资源来支持推送通知.
根据这份文件:
OS X中针对非运行应用程序的唯一推送通知类型是图标标记.
这仍然是这样吗?如果是这样,那没关系 - 我正在运行的 Mac应用程序已经能够(1)检测iCloud更改,(2)确定新的本地通知是否需要调度或现有的需要更新,以及(3)调度它们.所以添加推送支持并不是我想要的.
但是 - 我想知道如何从iOS方面解决这个问题.如果我在Mac上安排通知,并将其保存到iCloud,iOS上的应用程序如何在后台收到通知?
如果iOS应用程序在前台,我可以确认一切正常.收到iCloud通知,加载数据,重新安排通知.
但是如果我的应用程序在后台运行,或者根本没有运行,那么处理这个问题的最佳方法是什么?我理解后一种情况是我很可能无法控制的情况.但如果应用程序在后台,我会:
是否需要生成后台任务以定期检查数据更改?要么,
是否有可以订阅的通知,只有在iCloud数据发生变化时才会通知我?
我找到了它的fetch价值UIBackgroundModes,但我不确定这是我想要的 - 我不是在取得,我只是想在后台回应iCloud的变化.
我有一组序列化到文件的项目。有些项目可以依赖其他项目,但不允许循环引用。因此,它们需要以某种方式进行序列化,如果A依赖于B,B则首先在文件中进行序列化。
我写了我的Comparator,它使用一个reliesOn()函数来确定两个项目是否链接:
Collections.sort(itemsToSort, new Comparator<Item>() {
@Override
public int compare(Item first, Item second) {
boolean firstReliesOnSecond = reliesOn(first, second);
if (firstReliesOnSecond) {
return 1;
}
boolean secondReliesOnFirst = reliesOn(second, first);
if (secondReliesOnFirst) {
return -1;
}
return 0;
}
});
Run Code Online (Sandbox Code Playgroud)
这适用于某些情况,但不是全部。在调试中,很明显排序依赖于 的传递性质Comparator,并且可以理解不会比较所有可能的项目配对。
例如,有五个项目A通过E,如果:
A -> B
B -> E
C
D
E
Run Code Online (Sandbox Code Playgroud)
那么一种可能的排序是:
E, B, A, C, D
Run Code Online (Sandbox Code Playgroud)
至少,E …
我有一个 Kotlin 项目,它由三个模块组成:
Core < Service < Web
Run Code Online (Sandbox Code Playgroud)
结构是:
build.gradle
core/
build.gradle
service/
build.gradle
web/
build.gradle
Run Code Online (Sandbox Code Playgroud)
根build.gradle文件的结构是:
buildscript {
ext.kotlin_version = '1.1.60'
repositories {
mavenCentral()
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
subprojects {
apply plugin: 'kotlin'
apply plugin: 'jacoco'
compileKotlin {
kotlinOptions.jvmTarget = '1.8'
}
repositories {
mavenCentral()
jcenter()
}
}
Run Code Online (Sandbox Code Playgroud)
各个构建文件看起来像(对于core):
dependencies {
// Kotlin
compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
...
}
Run Code Online (Sandbox Code Playgroud)
而对于service(注意唯一的区别是项目依赖):
dependencies {
compile project (':core')
// Kotlin
compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
...
} …Run Code Online (Sandbox Code Playgroud) cocoa ×4
objective-c ×4
ios ×3
iphone ×3
java ×2
macos ×2
xcode ×2
64-bit ×1
app-store ×1
comparator ×1
cryptography ×1
encoding ×1
encryption ×1
gradle ×1
kotlin ×1
mocking ×1
networking ×1
ocmock ×1
parsing ×1
sorting ×1
transitivity ×1
unit-testing ×1
xcode4 ×1
xml ×1