私はこの問題を抱えています。私は2つのIBOutletsを持っており、プロパティとしてそれらを保持しています。
@interface MCNavigationController : UIViewController
@property (retain, nonatomic) IBOutlet UIView *contentView;
@property (retain, nonatomic) IBOutlet MCNavBar *navBar;
@end
問題は、deallocで、すべてのリリースを実行した後でも、contentViewとnavBarの割り当てが解除されていないことです。
- (void)dealloc
{
[contentView release];
NSLog(@"%@",contentView.superview);
[navBar release];
NSLog(@"%@",navBar.superview);
NSLog(@"%@",self.view);
[super dealloc];
NSLog(@"%@",navBar.superview);
NSLog(@"%@",contentView.superview);
NSLog(@"%@",self.view);
}
そして、ログでこれは私が得るものです:
2012-08-21 14:48:05.646 ShopRite[4250:12503] <UIView: 0x66b77d0; frame = (0 0; 320 416); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x66b7800>>
2012-08-21 14:48:05.649 ShopRite[4250:12503] <UIView: 0x66b77d0; frame = (0 0; 320 416); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x66b7800>>
2012-08-21 14:48:05.650 ShopRite[4250:12503] <UIView: 0x66b77d0; frame = (0 0; 320 416); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x66b7800>>
2012-08-21 14:48:05.650 ShopRite[4250:12503] <UIView: 0x66b77d0; frame = (0 0; 320 416); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x66b7800>>
2012-08-21 14:48:05.651 ShopRite[4250:12503] <UIView: 0x66b77d0; frame = (0 0; 320 416); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x66b7800>>
2012-08-21 14:48:13.726 ShopRite[4250:12503] *** -[MCNavigationController view]: message sent to deallocated instance 0x66b5f20
ただし、「self.viewの場合と同様に、navBarとcontentViewの割り当て解除されたインスタンスにメッセージが送信されます。他の場所に保持したり、他のビューに追加したりしないことは間違いありません。
任意の提案をいただければ幸いです。