ARC编译器收到以下警告:
"performSelector may cause a leak because its selector is unknown".
Run Code Online (Sandbox Code Playgroud)
这是我正在做的事情:
[_controller performSelector:NSSelectorFromString(@"someMethod")];
Run Code Online (Sandbox Code Playgroud)
为什么我会收到此警告?我理解编译器无法检查选择器是否存在,但为什么会导致泄漏?我怎样才能更改我的代码,以便我不再收到此警告?
我有一个iOS7应用程序,它基于Xcode主 - 详细信息模板,我移植到iOS8.一个变化很大的领域是UISplitViewController.
在纵向模式下,如果用户点击详细视图控制器,则主视图控制器将被关闭:

如果用户点击一行,我还希望能够以编程方式隐藏主视图控制器.
在iOS 7中,主视图控制器显示为弹出窗口,可以隐藏如下:
[self.masterPopoverController dismissPopoverAnimated:YES];
Run Code Online (Sandbox Code Playgroud)
使用iOS 8,主服务器不再是popover,因此上述技术不起作用.
我试图解雇主视图控制器:
self.dismissViewControllerAnimated(true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
或者告诉拆分视图控制器显示详细信息视图控制器:
self.splitViewController?.showDetailViewController(bookViewController!, sender: self)
Run Code Online (Sandbox Code Playgroud)
但到目前为止还没有任何工作.有任何想法吗?
我已经uibarbuttonitem动态创建了它并且它正常工作.我想以uibarbutton编程方式触发该项操作(单击)以进行单元测试.
即使代码在应用程序代码(而不是测试代码)中记录条形按钮项的操作时工作正常,它也会给出null.我使用的代码如下.
NSLog(@"%@",NSStringFromSelector(barButton.action));
Run Code Online (Sandbox Code Playgroud)
在测试代码中,我创建了一个名为logout的bar按钮,并为其指定了barbutton.以编程方式单击bar按钮项我遵循以下代码.
[logout.target performSelector:logout.action];
Run Code Online (Sandbox Code Playgroud)
但它没有用.我记录了注销按钮的操作,它也给出了null.
NSLog(@"%@",logout.action);
Run Code Online (Sandbox Code Playgroud)
我想知道如何以编程方式单击uibarbuttonitem动态创建的内容.