以下は、いくつかのパラメーターをメソッドに渡し、そのパラメーター値をローカルの ivar とプロパティに割り当てるケースです。
- (void) assignOwnerView:(UIView*)oView andPosition:(menuPosition)position withTopView:(UIView*)topView {
self.topView = topView;
self.ownerView = oView;
self.position = position;
<< --- other code --- >>
}
これらのプロパティのインターフェースはこれです(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;
3 つの割り当てを実行した後、デバッガーのブレークポイントで、値は次のようになります。
受け取ったパラメータ値は問題ないように見えますが、ivarownerView_
とに割り当てられた値は正しくありposition_
ません。一方、topView
大丈夫です。
プロパティではなく ivar に直接割り当てた場合も同じことが起こりました。
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