我在单例中有以下方法标题:
-(int) reconnectToServerForClass:(id)myClass
参数myClass始终是调用类的自身对象。我的项目中的不同ViewControllers调用此方法,所以我的问题是:
是否可以访问myClass.view或我该怎么做才能实现?
我的意图是我想为每个调用该方法的ViewController显示进度:
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:myClass.view animated:YES];
在我可以访问view-property之前是否需要转换myClass?
答案 0 :(得分:1)
如果我理解正确,您可以执行以下操作:
-(int) reconnectToServerForClass:(UIViewController *)myClass
{
//myClass.view
}
或在方法
内-(int) reconnectToServerForClass:(id)myClass
{
if([myClass isKindOfClass:[UIViewController class]])
{
UIViewController *viewController = myClass; //edit as suggested by Peter Segerblom
//viewController.view
}
}
您选择的哪个选项取决于您如何使用它以及如何管理或限制调用者,在选项1中,参数必须是UIViewController
的子类,并且选项相同2但不同之处在于您可以传入任何内容,但如果类型不是UIViewController
,则它将无效。
免责声明:此代码未经过内存测试和输入,因此可能无法编译,如果您遇到问题我会告诉我,我会编辑答案。
答案 1 :(得分:0)
是
如果要从单例类访问它,则创建一个成员或属性是指向视图的指针,然后在reconnectToServerForClass中设置它:并像访问任何其他成员一样访问它。
如果你想从外面访问它,你也会这样做,并做一些像[[MySingleton instance] view]
这样的事情请注意,龙位于您的路径之前,您需要确保视图在销毁之前“取消设置”此属性,否则您的单身人士可能会尝试访问不再存在的视图实例。