标签: selector

Xcode 13.3 警告:“'self' 引用方法 '{object}.self',这可能是意外的

我刚刚更新到 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)

xcode warnings selector ios swift

31
推荐指数
2
解决办法
5836
查看次数

SEL performSelector和arguments

看起来应该有一种简单的方法来调用带有一些参数的选择器,只要你拥有一个SEL对象.我似乎找不到正确的语法.

-(MyClass*) init: (SEL)sel owner:(NSObject*) parent
{
   int i =10;
   [parent performSelector:sel:i  ];
}
Run Code Online (Sandbox Code Playgroud)

iphone objective-c selector

28
推荐指数
2
解决办法
4万
查看次数

Objective-C传递方法作为参数

如何将一个方法作为参数传递给另一个方法?我在课堂上这样做.

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 xcode objective-c selector ios

28
推荐指数
4
解决办法
3万
查看次数

'-respondsToSelector:'在协议中找不到

几个月前我开始构建我的第一个iPhone程序以来,我收到了这条消息.

我想检查一个委托是否实现了一个给定的方法.它有效,但我得到了这个警告.

我怎么能以正确的方式做到这一点?

iphone warnings objective-c selector

27
推荐指数
1
解决办法
6706
查看次数

Android:如何制作可绘制选择器

我觉得这是一个愚蠢的问题,但我仍然在这里.我有一个图像按钮,我希望每次点击它都能更改它的图像.API似乎表示,最好的方法是在包含选择器和值的drawable文件夹中创建xml资源.然而,当我去创建一个新的android xml资源时,drawables没有选项.我错过了什么?

android selector xml-drawable

27
推荐指数
2
解决办法
5万
查看次数

为什么select()会在程序中消耗这么多CPU时间?

我有几个使用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,这意味着修复了相关的错误.

java profiling selector mina

27
推荐指数
1
解决办法
9343
查看次数

如何验证委托是否响应选择器?

我知道我需要写:

 [delegate respondsToSelector:@selector(myMethod:)]
Run Code Online (Sandbox Code Playgroud)

但是编译器抱怨respontsToSelector不是协议中的一个方法,这是正确的,但是我看到很多示例代码都使用了这个,你是怎么做到的?

iphone delegates selector

25
推荐指数
2
解决办法
1万
查看次数

动态添加元素的JQuery选择器

我无法弄清楚如何哄骗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 selector

23
推荐指数
1
解决办法
3万
查看次数

jQuery:包含(正则表达式)?

是否有可能有一个jQuery选择器,其中:contains()是一个正则表达式?

我需要选择一个元素,其中innerHTML包含可通过正则表达式找到的东西?

我知道这是一个简短的问题.我很抱歉.

var t = $("#id a:containsRegex("/[0-9]/g")"); // Doesn't work
Run Code Online (Sandbox Code Playgroud)

regex jquery contains selector

23
推荐指数
1
解决办法
2万
查看次数

我可以让#selector引用Swift中的闭包吗?

我想让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参数?

closures selector swift

23
推荐指数
4
解决办法
1万
查看次数