4

アプリで Google ドライブ SDK を使用しています。

2014年6月頃から完全に機能しています。

Xcode 6.3 への更新後、ターゲットがビルドされません。

実装ファイルGTMOAuth2ViewControllerTouch.mには、コンパイラが不平を言う 2 つのブロックが含まれています。

if (accessibility == NULL
    && &kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly != NULL) {
        accessibility = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly;
}

kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly具体的には、「 null ポインターと等しくないアドレスの比較は常に true です」というメッセージが表示されます。

if (accessibility != NULL && &kSecAttrAccessible != NULL) {
    [keychainQuery setObject:(id)accessibility
                      forKey:(id)kSecAttrAccessible];
}

kSecAttrAccessible具体的には、「 null ポインターと等しくないアドレスの比較は常に true です」というメッセージが表示されます。

コンパイラは、2 つのキーを比較する!= NULLと常に真であると教えてくれます。

私はコンピューター サイエンスのトレーニングを受けていないため、ここでの問題を理解できないと思います。それは単に悪い認識なのでしょうか?

私はこの質問を見てきましたが、Google ドライブ SDK 実装ファイル GTMOAuth2ViewControllerTouch.m に関する私の問題に関連するコンテキストを理解できません

根本的な問題を理解したいと思います。

助けてください...

4

2 に答える 2

7

accessibility = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly;これらのスニペットの代わりに、次を使用できます。 [keychainQuery setObject:(id)accessibility forKey:(id)kSecAttrAccessible];

これは、定数が NULL ポインターを持つことがないためです。そのため、チェックを行う理由はありません。SDK の更新で修正できると思いますが、手動で修正できます。

于 2015-04-11T05:12:31.397 に答える