在iOS中,为什么可以使用对象,但NSLog(@“%@”,object)会导致错误的内存访问?

时间:2012-04-20 03:55:02

标签: iphone objective-c ios cocoa-touch nslog

在iOS中,objRectCGRect个对象。代码运行正常

if (objRect.origin.x > 0)  { 
    // do something 
}

但在它之下,行

NSLog(@"%@", objRect);

将导致错误的内存访问(EXC_BAD_ACCESS),程序将停止。这是为什么?是否可以打印出对象?

1 个答案:

答案 0 :(得分:3)

CGRect不是Objective-C对象,因此无法响应[objRect description](这就是%@的含义)。这是一个结构:

struct CGRect {
    CGPoint origin;
    CGSize size;
};
typedef struct CGRect CGRect;

如果您想记录CGRect,可以使用NSStringFromCGRect