我刚刚更新到 Xcode 13.3,并且看到了几个新警告的实例,这是我在以前版本的 Xcode 中未曾见过的。例如,我有一个名为 LabelAndSwitchTableViewCell 的简单表视图单元格,如下所示:
import UIKit
class LabelAndSwitchTableViewCell: UITableViewCell {
private let label: UILabel = {
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
return label
}()
private let _switch: UISwitch = {
let _switch = UISwitch()
_switch.translatesAutoresizingMaskIntoConstraints = false
_switch.addTarget(self, action: #selector(didToggleSwitch), for: .valueChanged)
return _switch
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
contentView.addSubview(label)
contentView.addSubview(_switch)
// layout constraints removed for brevity
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
@objc …
Run Code Online (Sandbox Code Playgroud) 看起来应该有一种简单的方法来调用带有一些参数的选择器,只要你拥有一个SEL对象.我似乎找不到正确的语法.
-(MyClass*) init: (SEL)sel owner:(NSObject*) parent
{
int i =10;
[parent performSelector:sel:i ];
}
Run Code Online (Sandbox Code Playgroud) 如何将一个方法作为参数传递给另一个方法?我在课堂上这样做.
A类:
+ (void)theBigFunction:(?)func{
// run the func here
}
Run Code Online (Sandbox Code Playgroud)
B级:
- (void)littleBFunction {
NSLog(@"classB little function");
}
// somewhere else in the class
[ClassA theBigFunction:littleBFunction]
Run Code Online (Sandbox Code Playgroud)
C级:
- (void)littleCFunction {
NSLog(@"classC little function");
}
// somewhere else in the class
[ClassA theBigFunction:littleCFunction]
Run Code Online (Sandbox Code Playgroud) 几个月前我开始构建我的第一个iPhone程序以来,我收到了这条消息.
我想检查一个委托是否实现了一个给定的方法.它有效,但我得到了这个警告.
我怎么能以正确的方式做到这一点?
我觉得这是一个愚蠢的问题,但我仍然在这里.我有一个图像按钮,我希望每次点击它都能更改它的图像.API似乎表示,最好的方法是在包含选择器和值的drawable文件夹中创建xml资源.然而,当我去创建一个新的android xml资源时,drawables没有选项.我错过了什么?
我有几个使用MINA的Java应用程序,它们都使用20个MINA线程.一个应用程序提供大约10,000个并发连接,这些连接通常是空闲的但有时会接收输 对于该应用程序来说,20可能是一个合理的线程数,虽然我没有完全描述它(这个问题正在进行中).另一个应用程序一次只能提供大约15个连接但启动IO工作,因此它们非常繁忙,无论如何都有20个MINA线程,这显然太多了.
对我来说很奇怪的是,两个应用程序总是把他们的CPU时间的30%,有时高达60%用于MINA的select()方法,在VisualVM中进行了分析.调用堆栈如下所示:
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:228)
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:81)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
- locked <40ca5d54> (a sun.nio.ch.Util$2)
- locked <24649fe8> (a java.util.Collections$UnmodifiableSet)
- locked <3fae9662> (a sun.nio.ch.EPollSelectorImpl)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
at org.apache.mina.transport.socket.nio.NioProcessor.select(NioProcessor.java:72)
at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1093)
at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Run Code Online (Sandbox Code Playgroud)
它似乎是基于一个繁忙的民意调查,这对我来说听起来真的不对.
当我看到数字那么高时,我应该担心吗?是什么导致这个?这是我需要优化的东西还是更类似于睡眠或闲置程序?如果它更像是一个睡眠例程,它会以某种方式被安排为比其他CPU工作更低的优先级?
更新: 这个线程似乎是同一个问题.我遵循了它的建议,现在正在运行Java 1.7.0_45,但我仍然看到select
在具有10k连接的应用程序中占用高达90%的CPU时间.
我们正在使用MINA 2.0.4,这意味着修复了相关的错误.
我知道我需要写:
[delegate respondsToSelector:@selector(myMethod:)]
Run Code Online (Sandbox Code Playgroud)
但是编译器抱怨respontsToSelector不是协议中的一个方法,这是正确的,但是我看到很多示例代码都使用了这个,你是怎么做到的?
我无法弄清楚如何哄骗JQuery来选择在页面加载后动态插入DOM的元素(不是绑定处理程序).
例如:
如果我有HTML:
<div id="bar">
World!
</div>
Run Code Online (Sandbox Code Playgroud)
然后我创建一个新元素并将其插入到DOM中:
var foo = '<div id="foo">Hello</div>';
$("#bar").before(foo);
Run Code Online (Sandbox Code Playgroud)
我最终得到了这个:
<div id="foo">Hello</div>
<div id="bar">
World!
</div>
Run Code Online (Sandbox Code Playgroud)
稍后我可能想要对我插入的元素做一些不同的事情,使用JQuery来操作新元素.但是,如果我尝试做:
myHappyEl = $("#foo");
Run Code Online (Sandbox Code Playgroud)
那么myHappyEl将是未定义的.JQuery没有看到它,可能是因为它在加载DOM后附加了.
我已经看到很多建议解决了可能相关但又略有不同的问题,其中解决方案是使用.live()/.on()在元素进入时附加事件监听器.如果我想捕获点击事件或其他东西,那将是很棒的,但我没有; 我希望能够选择动态添加的元素.
是否有可能有一个jQuery选择器,其中:contains()是一个正则表达式?
我需要选择一个元素,其中innerHTML包含可通过正则表达式找到的东西?
我知道这是一个简短的问题.我很抱歉.
var t = $("#id a:containsRegex("/[0-9]/g")"); // Doesn't work
Run Code Online (Sandbox Code Playgroud) 我想让selector
我的方法的参数引用一个闭包属性,它们都存在于同一范围内.例如,
func backgroundChange() {
self.view.backgroundColor = UIColor.blackColor()
self.view.alpha = 0.55
let backToOriginalBackground = {
self.view.backgroundColor = UIColor.whiteColor()
self.view.alpha = 1.0
}
NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: #selector(backToOriginalBackground), userInfo: nil, repeats: false)
}
Run Code Online (Sandbox Code Playgroud)
但是,这显示错误:Argument of #selector cannot refer to a property
.
当然,我可以定义一个新的,单独的方法并将闭包的实现移动到它,但我想为这么小的实现保持节俭.
是否可以设置闭包#selector
参数?