ios为什么我的对象还活着



我的对象仍然活着,我不确定为什么。我确信原因很明显,但我太绿了,看不见。我正在观察仪器中的分配,而内存从未释放。。

我的头文件已附上。我应该如何处理这里的事务?谢谢你的建议。

仅供参考-这是用xcode 4.3开发的ios5。ARC已启用。

**编辑/添加**

  • 即使在我切换到一个完全不同的视图控制器(通过情节提要片段)后,这个UIView仍然保持活力。我怀疑这是一个强有力的参考,还是一个不能放弃的参考?

  • 据我所知,这种观点从未公开过。

  • 我正在使用instruments跟踪分配新->分配=>选择目标->ios 5.1设备=>记录。我只是边触摸边看图表。


#import <UIKit/UIKit.h>
#import "ValidatedTextField.h"
@interface LoginView : UIView {
    NSString *loginEmail;
    NSString *loginPassword;
}
@property (nonatomic, weak) IBOutlet UIView *loginView1;
@property (nonatomic, weak) IBOutlet UIView *loginView2;
@property (nonatomic, weak) IBOutlet UIView *loginView3;
@property (nonatomic, weak) IBOutlet UIView *loginView4;
@property (nonatomic, weak) IBOutlet UIView *recoverView1;
@property (nonatomic, weak) IBOutlet UIView *recoverView2;
@property (nonatomic, weak) IBOutlet UIScrollView *loginSV;
@property (nonatomic, weak) IBOutlet UIScrollView *recoverSV;
@property (nonatomic, weak) IBOutlet ValidatedTextField *signInEmailInput;
@property (nonatomic, weak) IBOutlet ValidatedTextField *signInPassInput;
@property (nonatomic, weak) IBOutlet ValidatedTextField *createEmailInput;
@property (nonatomic, weak) IBOutlet ValidatedTextField *createFirstNameInput;
@property (nonatomic, weak) IBOutlet ValidatedTextField *createLastNameInput;
@property (nonatomic, weak) IBOutlet ValidatedTextField *passInput;
@property (nonatomic, weak) IBOutlet ValidatedTextField *rePassInput;
@property (nonatomic, weak) IBOutlet ValidatedTextField *recoverIDInput;
@property (nonatomic, weak) IBOutlet UIButton *signInBtn;
@property (nonatomic, weak) IBOutlet UIButton *forgotPassBtn;
@property (nonatomic, weak) IBOutlet UIButton *createAccountBtn;
@property (nonatomic, weak) IBOutlet UIButton *createBackBtn;
@property (nonatomic, weak) IBOutlet UIButton *createContinueBtn;
@property (nonatomic, weak) IBOutlet UIButton *passBackBtn;
@property (nonatomic, weak) IBOutlet UIButton *passContinueBtn;
@property (nonatomic, weak) IBOutlet UIButton *sumBackBtn;
@property (nonatomic, weak) IBOutlet UIButton *sumSubmitBtn;
@property (nonatomic, weak) IBOutlet UIButton *recoverBackBtn;
@property (nonatomic, weak) IBOutlet UIButton *recoverPassBtn;
@property (nonatomic, weak) IBOutlet UIButton *returnToSignInBtn;
@property (nonatomic, weak) IBOutlet UILabel *signInEmailError;
@property (nonatomic, weak) IBOutlet UILabel *createEmailError;
@property (nonatomic, weak) IBOutlet UILabel *passwordError;
@property (nonatomic, weak) IBOutlet UILabel *sumEmail;
@property (nonatomic, weak) IBOutlet UILabel *sumFirstName;
@property (nonatomic, weak) IBOutlet UILabel *sumLastName;
@property (nonatomic, weak) IBOutlet UILabel *sumPassword;
@property (nonatomic, weak) IBOutlet UILabel *emailedToTxt;
-(IBAction)signInTUI:(id)sender;
-(IBAction)forgotPassTUI:(id)sender;
-(IBAction)createAccountTUI:(id)sender;
-(IBAction)createBackTUI:(id)sender;
-(IBAction)createContinueTUI:(id)sender;
-(IBAction)passBackTUI:(id)sender;
-(IBAction)passContinueTUI:(id)sender;
-(IBAction)sumBackTUI:(id)sender;
-(IBAction)sumSubmitTUI:(id)sender;
-(IBAction)recoverBackTUI:(id)sender;
-(IBAction)recoverPassTUI:(id)sender;
-(IBAction)returnToSignInTUI:(id)sender;
@end

即使在我切换到一个完全不同的视图控制器(通过情节提要片段)后,这个UIView仍然保持活力。我怀疑这是一个强有力的参考,还是一个不能放弃的参考?

我假设你的意思是,你把它划分为一个导航控制器堆栈上的推送,或者你以模式或其他方式呈现:

当您转到一个新的视图控制器时,它不一定会被解除分配。原始的视图控制器,因此它的视图,以及您的自定义视图将仍然有效,直到UIKit因为内存不足而决定杀死它。此时,您的视图控制器对象仍将保持活动状态,但它的视图将被卸载,您将获得viewDidUnload。只有当您从任何导航控制器/选项卡控制器中完全删除该视图控制器/如果它是模态的则将其关闭时,它才会被完全销毁。

最新更新