#import <Cocoa/Cocoa.h>
@interface Person : NSObject{
int age;
NSString* name;
}
@property int age;
@property NSString* name;
- (id)initWithName:(NSString*) name andAge:(int) age;
@end
类定义:
#import "Person.h"
@implementation Person
@synthesize name;
@synthesize age;
- (id)initWithName:(NSString*) n andAge:(int) a{
if (self = [super init]) {
self.name = n;
self.age = a;
}
return self;
}
- (NSString*)description{
NSString* desc = [NSString stringWithFormat:@"name:%@ age:%i",name, age];
return desc;
}
@end
接着在Main函数中添加测试代码:
int main(int argc, const char * argv[])
{
NSMutableArray* persons = [NSMutableArray array];
for (int i = 0; i < 10; i++) {
Person* person = [[Person alloc] initWithName:[NSString stringWithFormat:@"Person%i", i] andAge:i];
[persons addObject:person];
}
for (Person* p in persons) {
BOOL flag = true;
if (flag) {
NSLog(@"%@", p);
}
}
return 0;
}
我们在第一个for循环中的“[persons addObject:person];”语句所在行添加断点,然后运行程序,程序执行到断点处,我们在lldb窗口(右下方)中输入po person,可以输出当前person对象的属性值:
这里po代表print object,也就是打印对象(object),如果这个对象重载了description方法,则po命令会调用对象的这个方法进行输出(本例中我们重载description就是这个目的),否则po命令会打印当前对象的起始内存空间地址。
我们接着在lldb窗口中输入p person.name命令,可以打印出person对象的name属性的地址和值:
这里p命令代表print,用来打印基本类型(如int,BOOL,char,float等等)
接着我们来看如何用lldb的expr命令来修改变量的值:
仍然在刚才的位置添加断点,执行到age=2的person时,我们在lldb窗口中输入expr person.name=@"changed name",然后我们disable掉这个断点,在main函数的return 0;这句添加断点,然后按快捷键Control+Command+Y执行到新添加的断点,在窗口中我们查看lldb窗口中第二个for循环的输出,发现age=2的person的名字变成了“changed name”: