iPhone-何时释放应用程序委托?
我在所有ViewController之间使用了一个对象,因此我将其固定在应用程序委托中。(我想这是正确的地方?) 如果viewController内的某个动作触发,需要向所述对象发送某些信息,我将执行以下操作:iPhone-何时释放应用程序委托?,iphone,delegates,release,Iphone,Delegates,Release,我在所有ViewController之间使用了一个对象,因此我将其固定在应用程序委托中。(我想这是正确的地方?) 如果viewController内的某个动作触发,需要向所述对象发送某些信息,我将执行以下操作: - (IBAction)sliderMoved:(id) sender{ MyAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; [[delegate myObject] setSpe
- (IBAction)sliderMoved:(id) sender{
MyAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[[delegate myObject] setSpeed:(int)slider];
// [delegate release];
}
我有点担心我不会在任何地方释放委托对象,这样可以吗?如果我删除注释行[delegate release],它只会使应用程序崩溃 您不拥有在此代码段中创建的
委托
对象。您没有使用alloc
、new
或copy
创建它。你也没有保留它。所以,释放它不是你的责任
至于将对象放入应用程序委托中只是为了能够从代码的其他部分访问它,这是糟糕的OOP设计
编辑以添加
我想我最好举个例子
假设您有一个类MyClass
,您想创建一个可以传递的对象
您可以在应用程序委托中创建它,看起来您已经在这样做了:
MyObject *myObject = [[MyObject alloc] init];
然后创建另一个视图控制器-通常会这样做,但该视图控制器具有以下属性:
@property(retain) MyObject *object;
然后在创建视图控制器时设置此属性:
YourViewController *vc = [[YourViewController alloc] init];
vc.object = myObject;
并且,如果您根据需要将此对象传递给其他视图控制器。您不拥有在此代码段中创建的
委托对象。您没有使用alloc
、new
或copy
创建它。你也没有保留它。所以,释放它不是你的责任
至于将对象放入应用程序委托中只是为了能够从代码的其他部分访问它,这是糟糕的OOP设计
编辑以添加
我想我最好举个例子
假设您有一个类MyClass
,您想创建一个可以传递的对象
您可以在应用程序委托中创建它,看起来您已经在这样做了:
MyObject *myObject = [[MyObject alloc] init];
然后创建另一个视图控制器-通常会这样做,但该视图控制器具有以下属性:
@property(retain) MyObject *object;
然后在创建视图控制器时设置此属性:
YourViewController *vc = [[YourViewController alloc] init];
vc.object = myObject;
并且,如果您根据需要将此对象传递给其他视图控制器。谢谢。我应该将此对象存储在哪里?(我不熟悉iphone和MVC)。我需要初始化这个类中多个ViewController可以交互的一个对象。我这样做的方式是在使用它的每个视图控制器中为这个对象创建一个属性,然后从其他控制器设置它。我有点困惑。我认为属性创建了一个对象并为其设置了访问器方法。这将如何初始化一个可在ViewController之间共享的对象?对不起,所有的问题。忽略我之前的评论,我相信我已经解决了:)对于其他感兴趣的人,请看这里,谢谢。我应该将此对象存储在哪里?(我不熟悉iphone和MVC)。我需要初始化这个类中多个ViewController可以交互的一个对象。我这样做的方式是在使用它的每个视图控制器中为这个对象创建一个属性,然后从其他控制器设置它。我有点困惑。我认为属性创建了一个对象并为其设置了访问器方法。这将如何初始化一个可在ViewController之间共享的对象?对不起,所有的问题。忽略我之前的评论,我相信我已经解决了:)对于其他感兴趣的人,请看这里