Jelajahi Sumber

【APPCenter】Crash编号:46(VerificationManager) -- 修复

lizhe 10 bulan lalu
induk
melakukan
1fae70ce5d

+ 34 - 27
PDF Office/PDF Master/Class/Common/OC/NSObject+DeviceInfo/NSObject+DeviceInfo.m

@@ -78,31 +78,38 @@ NSString *GetCompatible() {
 }
 
 NSString *GetSystemVersion() {
-    NSTask *task;
-    task = [[NSTask alloc] init];
-    [task setLaunchPath: @"/usr/bin/sw_vers"];
-    
-    NSArray *arguments;
-    arguments = [NSArray arrayWithObjects: @"-productVersion", nil];
-    [task setArguments: arguments];
-    
-    NSPipe *pipe;
-    pipe = [NSPipe pipe];
-    [task setStandardOutput: pipe];
-    
-    NSFileHandle *file;
-    file = [pipe fileHandleForReading];
-    
-    [task launch];
-    
-    NSData *data;
-    data = [file readDataToEndOfFile];
-    
-    NSString *string;
-    string = [[NSString alloc] initWithData: data
-                                   encoding: NSUTF8StringEncoding];
-//    NSLog (@"got\n%@", string);
-    string = [string stringByReplacingOccurrencesOfString:@"\r\0" withString:@""];
-    string = [string stringByReplacingOccurrencesOfString:@"\n" withString:@""];
-    return string;
+    @try {
+        NSTask *task = [[NSTask alloc] init];
+        [task setLaunchPath: @"/usr/bin/sw_vers"];
+        
+        NSArray *arguments = [NSArray arrayWithObjects: @"-productVersion", nil];
+        [task setArguments: arguments];
+        
+        NSPipe *pipe = [NSPipe pipe];
+        [task setStandardOutput: pipe];
+        
+        [task launch];
+        [task waitUntilExit];
+        
+        if ([task terminationStatus] != 0) {
+            NSLog(@"Error: Task terminated with non-zero status %d", [task terminationStatus]);
+            return nil;
+        }
+        
+        NSFileHandle *file = [pipe fileHandleForReading];
+        NSData *data = [file readDataToEndOfFile];
+        
+        if (!data) {
+            NSLog(@"Error: Failed to read data from task output pipe");
+            return nil;
+        }
+        
+        NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
+        string = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
+        
+        return string;
+    } @catch (NSException *exception) {
+        NSLog(@"Exception: %@", exception);
+        return nil;
+    }
 }