【发布时间】:2011-04-28 05:39:19
【问题描述】:
这是我的问题here的扩展
这是场景:
我有三个选项卡,其中有一个开关。当我触摸开关时,标签会更新(打开或关闭),并且灯泡的图像会从一个 jpg 更改为另一个。所以我正在使用 UIImageView 来更改 UIImage。
#import <UIKit/UIKit.h>
@interface FirstViewController : UIViewController {
UISwitch *switch1;
UILabel *status1;
}
@property (nonatomic,retain) IBOutlet UISwitch *switch1;
@property (nonatomic,retain) IBOutlet UILabel *status1;
- (IBAction) switch1Change;
@end
实现是
#import "FirstViewController.h"
@implementation FirstViewController
@synthesize switch1;
@synthesize status1;
- (IBAction) switch1Change
{
if (switch1.on) {
status1.text = @"ON";
...
}
else {
status1.text = @"OFF";
...
}
}
我无法理解何时释放这些对象。我尝试在 - (void) dealloc {} 方法中提供 [switch1 release]。但是当我切换标签时,应用程序崩溃了。如何做到这一点?
【问题讨论】:
-
我怀疑你的崩溃与你放在
[class dealloc]中的[switch1 release]无关,因为它只有在出现内存警告时才会被调用。我建议更仔细地查看运行日志并在调试模式下工作,以查看导致崩溃的实际错误是什么。 -
在您的 dealloc 方法(或在 ViewDidUnload 中)释放保留/复制的对象(如在您的 IBOutlets 中)是正确的。有关详细信息,请参阅 stackoverflow.com/questions/3965399/… 和 developer.apple.com/library/ios/#featuredarticles/…。您是否删除了发布声明并且它没有崩溃?我倾向于认为其他东西会使您的应用程序崩溃...
-
@tsakoyan :是的,我删除了发布声明并且应用程序没有崩溃。我将查看运行日志并将其发布在此处。
标签: iphone objective-c xcode tabbar