我正在UIViewController类上创建一个Objective-C类。在我的项目中,我想要一个单一且简单的方法来获得应用程序委托。
这就是我正在做的事情
// header file UIViewController+AppDelgate.h
#import <UIKit/UIKit.h>
@class ExampleAppDelegate;
@interface UIViewController (AppDelegate)
@property (weak, nonatomic, readonly) ExampleAppDelegate *appDelegate;
@end
// implementation file UIViewController+AppDelegate.m
#import "UIViewController+AppDelegate.h"
#import "ExampleAppDelegate.h"
@implementation UIViewController (AppDelegate)
- (ExampleAppDelegate *) appDelegate {
return (ExampleAppDelegate *)[[UIApplication sharedApplication] delegate];
}
@end
我应该将该属性定义为弱吗?我认为保留这个人是不好的,因为它通常会保留在其中引用的视图控制器上。
答案 0 :(得分:1)
弱/强在这种情况下是一个没有实际意义的点,因为没有持有指针的本地实例变量。 ARC将做正确的事情(即,它不会发送比任何给定范围的版本更多的保留。)
答案 1 :(得分:0)
为什么不用类方法创建一个Utility类来做同样的事情,然后你可以引用它:
[Utility appDelegate];
并且您不必为每个需要访问AppDelegate的ViewController添加属性,就像您当前设置它一样。
答案 2 :(得分:0)
从您的实现看起来您不需要定义属性,您只需要声明方法-(ExampleAppDelegate *)appDelegate;
这当然只有在类的实例上调用时才有效,除非你把它作为类方法。