Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa Plist和缓存路径_Cocoa_App Store - Fatal编程技术网

Cocoa Plist和缓存路径

Cocoa Plist和缓存路径,cocoa,app-store,Cocoa,App Store,根据Mac应用商店规则2.30: “程序只能写入允许的位置。” 我的应用程序(com.SomeApp)包含具有自己ID(com.SomeHelper)的捆绑应用程序。 不幸的是,这个助手应用程序可以编写自己的首选项(~/Library/preferences/com.SomeHelper.plist)和缓存文件(~/Library/Caches/com.SomeHelper)。 评论员拒绝了整个应用程序!没有办法讨论这个愚蠢的规则。 开发者只能在iTC中为MAS应用程序注册一个ID,并且我不能为

根据Mac应用商店规则2.30: “程序只能写入允许的位置。”

我的应用程序(com.SomeApp)包含具有自己ID(com.SomeHelper)的捆绑应用程序。 不幸的是,这个助手应用程序可以编写自己的首选项(~/Library/preferences/com.SomeHelper.plist)和缓存文件(~/Library/Caches/com.SomeHelper)。 评论员拒绝了整个应用程序!没有办法讨论这个愚蠢的规则。 开发者只能在iTC中为MAS应用程序注册一个ID,并且我不能为捆绑应用程序使用相同的ID(以防止冲突并通过iTC元信息验证)。 由网络服务生成的缓存文件(基于URL请求)

如何解决这个难题? 有没有办法禁用plist和cache? 或者也许有一种方法可以更改首选项和缓存文件的位置? 有更好的解决方案吗?

这是我的最终解决方案(部分为伪代码,抱歉):

//在助手的main.m中:

@implementation NSUserDefaults (Forwarder)

-(void)setObject:(id)value forKey:(NSString *)defaultName
{
[[MainAppServer sharedPrefsServer]/* some IPC to parent process*/ setObject:value forKey:defaultName];// I still use distributed objects available before sandboxing rules, next we can use XPC, I hope…
}

@end


int main(int argc,char* argv[])
{
…

NSAutoreleasePool * arp = [NSAutoreleasePool new];
[NSURLCache setSharedURLCache:[[[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:@"/dev/null"] autorelease]];
[[NSUserDefaults standardUserDefaults] addSuiteNamed:@"your.main.app.plist-domain.here"];
[arp drain];
…
return NSApplicationMain(argc,  (const char **) argv);
}
总结:

  • 我们禁用了缓存
  • 我们使用户默认通过套件读取,并通过某种IPC方式转发写入
  • 我检查了-现在没有生成缓存和plist文件。 难题解决了