2011-08-24 24 views
1

我试图使用UITableView列出特定进程的详细信息。它在Xcode模拟器上运行时完美显示。但是,在实际设备上部署时,它的格式不正确。令人费解的是,当我在Mac和iPhone上执行“ps aux”命令时,输出的格式似乎是相同的。当在iPhone上部署“ps aux”命令输出时格式不正确

这是怎么看起来像在模拟器:

enter image description here

这是怎么看起来像在实际设备上:

enter image description here

这里是我的控制器代码显示这些视图:

viewDidLoad:

NSLog(@"myString is :%@", myString); 
int processID = [myString intValue]; 

NSTask *task; 
task = [[NSTask alloc] init]; 
[task setLaunchPath: @"/bin/ps"]; 

arguments = [NSArray arrayWithObjects: @"aux", [NSString stringWithFormat:@"%i", processID],nil]; 

[task setArguments: arguments]; 

NSPipe *pipe; 
pipe = [NSPipe pipe]; 
//[task setStandardOutput: 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(@"%@",string); 


NSArray *lines= [string componentsSeparatedByString:@"\n"]; 

NSString *lastline = [lines objectAtIndex:[lines count]-2]; 
// NSLog(@"%@",lastline); 




lines2= [lastline componentsSeparatedByString:@" "]; 
NSLog(@"%@",lines2); 
for (int i=0; i<[lines2 count]; i++) { 

    if([[lines2 objectAtIndex:i] isEqualToString:@""]){ 
     [lines2 removeObjectAtIndex:i]; 
    } 

} 
for (int i=0; i<[lines2 count]; i++) { 

    if([[lines2 objectAtIndex:i] isEqualToString:@""]){ 
     [lines2 removeObjectAtIndex:i]; 
    } 

} 


NSLog(@"Lines 2 is%@",lines2); 
NSLog(@"Status is %@",[lines2 objectAtIndex:7]); 


self.title = @"Process Info"; 

label = [[NSMutableArray alloc]init]; 

[label addObject:@"User:"]; 
[label addObject:@"Process ID:"]; 
[label addObject:@"CPU(%):"]; 
[label addObject:@"MEM(%):"]; 
[label addObject:@"VSZ:"]; 
[label addObject:@"RSS:"]; 
[label addObject:@"TT:"]; 
[label addObject:@"STAT:"]; 
[label addObject:@"Time Started:"]; 
[label addObject:@"Time Elapsed:"]; 
[label addObject:@"Launch Command:"]; 

[super viewDidLoad]; 

的cellForRowAtIndexPath:

static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
} 

[cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 
NSString *cellValue = [label objectAtIndex:indexPath.row]; 
cell.textLabel.text = cellValue; 
cell.textColor = [UIColor colorWithRed:154.0/255.0 green:14.0/255.0 blue:2.0/255.0 alpha:1]; 
cell.font = [UIFont systemFontOfSize:16.0]; 


UILabel *label2 = [[[UILabel alloc] initWithFrame:CGRectMake(120.0, 0, 240.0, 
                   tableView.rowHeight)] autorelease]; 


label2.font = [UIFont systemFontOfSize:16.0]; 
NSString *cellValue1 = [lines2 objectAtIndex:indexPath.row]; 
label2.text = cellValue1; 
label2.textAlignment = UITextAlignmentLeft; 
label2.textColor = [UIColor blackColor]; 
label2.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | 
UIViewAutoresizingFlexibleHeight; 
[cell.contentView addSubview:label2]; 


return cell; 

numberOfRowsInSection:

return [label count]; 

的dealloc:

[myString release]; 
[arguments release]; 
//[lines2 release]; 
[ResultStringID release]; 
[values release]; 
[label release]; 
[super dealloc]; 

的 “PS AUX” 命令在Mac输出:

enter image description here

“的ps aux” 命令对iPhone的输出(通过SSH壳):

enter image description here

+0

有点多余的内容,首先在两个平台上发布'ps aux'的输出。 –

回答

0

有没有保证ps iOS上做同样的事情在其他平台上。没有用户界面可以让用户访问iOS设备上的ps命令,所以你很幸运有一个ps命令。尝试从命令中记录输出以查看您获得的内容,但如果没有太多内容,请不要感到惊讶。

+0

是有输出,但与Mac上相比,它的数据严重不足。还是要谢谢你的帮助 :) –