属性/属性:getter不';不行!Objective-C iPhone
在我的程序中,我创建了一个属性:属性/属性:getter不';不行!Objective-C iPhone,iphone,objective-c,properties,position,positioning,Iphone,Objective C,Properties,Position,Positioning,在我的程序中,我创建了一个属性: @property (nonatomic, retain) IBOutlet UIImageView *block; @synthesize block; @interface View : NSObject { @private BOOL isEnabled_; } @property (getter=isEnabled) BOOL enabled; @end @implementation View @synthesize enabled = i
@property (nonatomic, retain) IBOutlet UIImageView *block;
@synthesize block;
@interface View : NSObject {
@private
BOOL isEnabled_;
}
@property (getter=isEnabled) BOOL enabled;
@end
@implementation View
@synthesize enabled = isEnabled_;
@end
-
现在如果我这样做:
NSLog(@"BLOCK = %i", block.center.y);
它只是说:
块=0
但是我的block UIImageView对象永远不会在y=0上
请帮忙
CGPoint.y
是CGFloat
,因此需要使用%f
将其打印出来。CGPoint.y
是CGFloat
,因此需要使用%f
将其打印出来。属性和实例变量是不同的东西;属性表示类公开的状态,而实例变量是实现类状态的一种方法
编写block.center.y
时,您正在访问名为block
的实例变量,而不是调用属性getter。要调用属性getter,必须始终使用点或消息语法,例如:
CGFloat centerY;
centerY = self.block.center.y; // sends -block getter to self
centerY = [self block].center.y; // sends -block getter to self
下面是一个示例,其中所有这些都有所不同:isEnabled\uu
是实例变量,enabled
是属性,-isEnabled
是属性调用的getter方法:
@property (nonatomic, retain) IBOutlet UIImageView *block;
@synthesize block;
@interface View : NSObject {
@private
BOOL isEnabled_;
}
@property (getter=isEnabled) BOOL enabled;
@end
@implementation View
@synthesize enabled = isEnabled_;
@end
getter=isEnabled
属性告诉编译器在获取enabled
属性时生成-isEnabled
消息。@synthesis
将enabled
属性定义为由实例变量isEnabled\uuuu
支持
因此,您可以通过以下方式访问该属性:
BOOL shouldDrawView;
shouldDrawView = someView.enabled; // sends -isEnabled to someView
shouldDrawView = [someView isEnabled]; // also sends -isEnabled to someView
属性和实例变量是不同的东西;属性表示类公开的状态,而实例变量是实现类状态的一种方法 编写
block.center.y
时,您正在访问名为block
的实例变量,而不是调用属性getter。要调用属性getter,必须始终使用点或消息语法,例如:
CGFloat centerY;
centerY = self.block.center.y; // sends -block getter to self
centerY = [self block].center.y; // sends -block getter to self
下面是一个示例,其中所有这些都有所不同:isEnabled\uu
是实例变量,enabled
是属性,-isEnabled
是属性调用的getter方法:
@property (nonatomic, retain) IBOutlet UIImageView *block;
@synthesize block;
@interface View : NSObject {
@private
BOOL isEnabled_;
}
@property (getter=isEnabled) BOOL enabled;
@end
@implementation View
@synthesize enabled = isEnabled_;
@end
getter=isEnabled
属性告诉编译器在获取enabled
属性时生成-isEnabled
消息。@synthesis
将enabled
属性定义为由实例变量isEnabled\uuuu
支持
因此,您可以通过以下方式访问该属性:
BOOL shouldDrawView;
shouldDrawView = someView.enabled; // sends -isEnabled to someView
shouldDrawView = [someView isEnabled]; // also sends -isEnabled to someView
无论如何,您都没有使用getter。要使用getter,必须使用self.block=foo;fluchtpunkt:你应该发布一个问题的答案,而不是简单地用评论来回答。你无论如何都没有使用getter。要使用getter,必须使用self.block=foo;fluchtpunkt:你应该发布一个问题的答案,而不是简单地用评论来回答。