0

私は自分のアプリケーションを分析しており、コードに与えられた設定ユーザー名と設定パスワード値に格納されたオブジェクトの潜在的なリークに直面しています

-(void) checkRememberPassword{
        CFStringRef userNameKey = CFSTR("user_id_preferences");
        CFStringRef settingUserName = (CFStringRef)CFPreferencesCopyAppValue(userNameKey, kCFPreferencesCurrentApplication);
        CFStringRef passwordKey = CFSTR("password_preferences");
        CFStringRef settingPasswordValue = (CFStringRef)CFPreferencesCopyAppValue(passwordKey, kCFPreferencesCurrentApplication);
        NSString *tempString = (__bridge NSString *)settingPasswordValue;
        NSString *tempString1 = (__bridge NSString *)settingUserName;
        if(([tempString1 length] != 0) || ([tempString length] !=0)){
            txtUserName.text = (__bridge NSString *)settingUserName;
            txtPassword.text = (__bridge NSString *)settingPasswordValue;
            [checkBoxButton setImage:[UIImage imageNamed:@"checkbox_full.png"] forState:UIControlStateNormal];
            flagForRemPassword = YES;

        }
    }
4

2 に答える 2

0

CFPreferencesCopyAppValue によって返される文字列は、Create ルールに従います ( https://developer.apple.com/library/ios/documentation/CoreFoundation/Conceptual/CFMemoryMgmt/Concepts/Ownership.html#//apple_ref/doc/uid/20001148-103029 ) 。 Core Foundation -- 作業が終了したら、CFRelease を呼び出す必要があります。ARC はこれを行いませ

于 2013-11-11T22:08:40.737 に答える
0

CFBridgingRelease単純な C スタイルのキャストの代わりに、オブジェクトの所有権を ARC に転送するために使用します。

NSString *tempString = (NSString*)CFBridgingRelease(settingPasswordValue);
于 2013-11-11T22:26:31.847 に答える