1

Appleは現在、将来のすべてのアプリをサンドボックス化することを要求しているので、私はアプリをサンドボックス化するための指示に従いました。ビルドは成功しましたが、system(rm -rf ~/.Trash/*)コマンドが機能しなくなりました。何も起こらなかった。ここで私が混乱しているのは、このシステムコマンドがApp Sandboxing/Entitlementsで機能しない理由です。これが私の資格設定です:

資格:チェック済み

アプリのサンドボックス化:チェック済み

そして、これが私の現在のコードです:

- (void)viewDidLoad {
[self emptyTrash];
}

- (void)emptyTrash {
system(rm -rf ~/.Trash/*);
}

ご協力いただきありがとうございます!

4

1 に答える 1

0

ドキュメントを見てください。

Mac OS X のパス検索 API は、POSIX レイヤーの上にあり、ユーザーのホーム ディレクトリに対してではなく、コンテナーに対して相対的なパスを返します。アプリをサンドボックス化する前に、ユーザーの実際のホーム ディレクトリ (~) 内の場所にアクセスし、Cocoa または Core Foundation API を使用している場合、サンドボックス化を有効にした後、パス検索コードは代わりにアプリのコンテナーを自動的に使用します。

あなたが使用することができます

struct passwd *getpwuid(uid_t uid);
struct passwd {
char    *pw_name;       /* user name */
char    *pw_passwd;     /* encrypted password */
uid_t   pw_uid;         /* user uid */
gid_t   pw_gid;         /* user gid */
__darwin_time_t pw_change;      /* password change time */
char    *pw_class;      /* user access class */
char    *pw_gecos;      /* Honeywell login info */
char    *pw_dir;        /* home directory */
char    *pw_shell;      /* default shell */
__darwin_time_t pw_expire;      /* account expiration */
}

 #include <pwd.h>
 #include <sys/types.h>
 char *HomeDirectory = getpwuid(getuid())->pw_dir;
 NSLog(@"%s", HomeDirectory);
 system([[NSString stringWithFormat:@"rm -rf %s/.Trash/",HomeDirectory] UTF8String]);
于 2012-07-02T09:55:17.650 に答える