0

私のiPhoneアプリのViewControllerは、UIViewControllerまたはから拡張されUITableViewControllerます。コントローラ間でユーザー情報を渡すことができるように、それらすべてにプロパティを追加する必要があります。私が知っている解決策は、とを追加し、BaseViewController両方BaseTableViewControllerにプロパティを追加してから、代わりにすべてのコントローラーがそれらから継承するようにすることです。

でプロパティを繰り返すBaseViewControllerことBaseTableViewControllerは、私にとって最もエレガントな解決策ではないようです。より良いものはありますか?

ありがとう!

4

1 に答える 1

0

あなたのケースでは拡張機能が機能しないため、 UIViewController にカテゴリを記述し、必要objc_getAssociatedObjectなデータを保存して で取得するために使用できますobjc_getAssociatedObject。ただし、このオプションは注意して使用する必要があります。

static NSString *key = @"example";

- (void)setExampleProperty:(id)value {
    objc_setAssociatedObject(self, (__bridge void *)key, value, OBJC_ASSOCIATION_RETAIN);
}

- (id)exampleProperty {
    return objc_getAssociatedObject(self, (__bridge void *)key);
}

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html

于 2012-09-14T07:49:20.543 に答える