Ios 在我的UIViewController中存储一个强制引用(到我的UIView子类)可以吗?

Ios 在我的UIViewController中存储一个强制引用(到我的UIView子类)可以吗?,ios,iphone,objective-c,uiview,uiviewcontroller,Ios,Iphone,Objective C,Uiview,Uiviewcontroller,在UIViewController的子类中存储对MyView的强制引用是否有任何危险?每次我想使用实例变量/方法时,我都试图避免强制转换self.view,因为它看起来很难看。例如,让我们避免: [MyView*self.view instancedView] castedView与self.view同时定义 例如,castedView.instancedView是castedView的子视图,存储为实例变量UIButton,我想将tap事件侦听器附加到该UIButton MyViewContr

在UIViewController的子类中存储对MyView的强制引用是否有任何危险?每次我想使用实例变量/方法时,我都试图避免强制转换self.view,因为它看起来很难看。例如,让我们避免:

[MyView*self.view instancedView]

castedView与self.view同时定义

例如,castedView.instancedView是castedView的子视图,存储为实例变量UIButton,我想将tap事件侦听器附加到该UIButton

MyViewController.h MyViewController.m
非常感谢您的帮助。

您的要求并不明确。有什么方法可以重新表述它吗?为什么你甚至需要强制转换?@Legolas我需要强制转换才能访问UIView子类的实例方法/变量你不是强制转换视图,而是创建视图的新实例。如果您只想让另一个指向self.view的指针强制转换为MyView*,那么请删除alloc/init行并设置self.castedVIew=MyView*self.view;。这是假设您的故事板/xib已经将视图创建为MyView。@BrianWalker我正在以编程方式创建MyView。在不使用故事板的情况下,我这样做是最有效的。
@interface MyViewController : UIViewController
    @property MyView *castedView;
@end
@implementation MyViewController
    @synthesize castedView;

    - (void)viewDidLoad {
      [super viewDidLoad];
      castedView = [[MyView alloc] init];
      self.view = castedView;
      // ... create gestureRecognizer named "onTap" that calls "whenTapped" ...
      [castedView.instancedView addGestureRecognizer:onTap];
    }

    - (IBAction)whenTapped {
        castedView.instancedView.backgroundColor = [UIColor whiteColor];
    }
@end