以下是我将一些参数传递给方法,然后将参数值分配给本地ivars和属性的情况:
- (void) assignOwnerView:(UIView*)oView andPosition:(menuPosition)position withTopView:(UIView*)topView {
self.topView = topView;
self.ownerView = oView;
self.position = position;
<< --- other code --- >>
}
这些属性的接口是这个(UPDATED with SYNTHESIS)
@interface MenuVC (){
UIView *ownerView_;
UIView *topView_;
menuPosition position_;
}
@property (nonatomic, retain) UIView *ownerView;
@property (nonatomic, retain) UIView *topView;
@property (assign) menuPosition position;
@end
@implementation MenuVC
@synthesize list, menuDelegate;
@synthesize ownerView = ownerView_;
@synthesize topView = topView_;
@synthesize position = position_;
- (id)initWithFrame:(CGRect)frame style:(UITableViewStyle)style
{...
这里定义了枚举:
typedef enum {
above,
below,
centered
} menuPosition;
执行三个赋值后,在调试器的断点处,值如下所示:
收到的参数值看起来没问题,但ivars ownerView_
和position_
的指定值不正确。另一方面,topView
没问题。
当我直接分配到ivars而不是属性时,同样的事情发生了。
当我升级到Lion(10.7.3)和XCode 4.3.1时,我开始看到这个问题。在那之前它工作正常。我在我的应用程序的其他位置看到了这个,我还没有看到它的任何模式。
未使用ARC。
我以前报告过这个问题,但没有得到答案。在这种情况下,问题描述更简单。这可能会更容易看出问题所在。UPDATE - 添加了头文件
#import <UIKit/UIKit.h>
@class MenuVC;
@protocol menuDelegateProtocol
typedef enum {
above,
below,
centered
} menuPosition;
- (void) didSelectItemFromMenu:(MenuVC *)menu atIndex:(NSUInteger) index;
@end
@interface MenuVC : UITableViewController {
NSArray *list;
float extendedHeight;
id<menuDelegateProtocol> menuDelegate;
}
@property (nonatomic, retain) NSArray *list;
@property (nonatomic, assign) id<menuDelegateProtocol> menuDelegate;
- (id) initWithFrame:(CGRect)frame style:(UITableViewStyle)style;
- (void) hide;
- (void) unhide;
- (void) assignOwnerView:(UIView*)oView andPosition:(menuPosition)position withTopView:(UIView*)topView;
@end
答案 0 :(得分:0)
你没有合成这些属性。
放:
@synthetize ownerView = ownerView_;
@synthetize topView = topView_;
@synthetize position = position_;
“@implementation MenuVC”之后。
答案 1 :(得分:0)
我将调试器从LLDB更改为GDB。这似乎是LLDB的一个问题。我现在没有看到这个。