0

UIViewController クラスで Objective-C カテゴリを作成しています。私のプロジェクトでは、アプリのデリゲートを取得するための 1 つの特異で簡単な方法が必要です。

これが私がやっていることです

// 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

プロパティを弱いと定義する必要がありますか? 内部で参照されているビュー コントローラーを通常保持しているため、この男を保持するのは良くないと思います。

4

3 に答える 3

1

ポインターを保持するローカル インスタンス変数がないため、この場合の弱い/強いは議論の余地があります。ARC は正しいことを行います (つまり、任意のスコープに対してリリースよりも多くの保持を送信しません)。

于 2012-06-16T00:50:59.873 に答える
0

同じことを行うクラス メソッドを使用して Utility クラスを作成しないのはなぜですか。次のように参照できます。

[Utility appDelegate];

また、現在セットアップしている方法で、AppDelegate にアクセスする必要があるすべての ViewController にプロパティを追加する必要はありません。

于 2012-06-16T00:47:38.953 に答える
0

実装の外観から、プロパティを定義する必要はありません。メソッドを宣言するだけで済みます-(ExampleAppDelegate *)appDelegate;

もちろん、これは、クラスメソッドにしない限り、クラスのインスタンスで呼び出された場合にのみ機能します。

于 2012-06-16T00:48:26.877 に答える