Подтвердить что ты не робот

Что такое быстрый эквивалент makeObjectsPerformSelector?

В Objective-C Я использую этот код для удаления любых под-представлений:

[self.view.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];

Но как его использовать быстро? Я видел документацию на яблоко, чтобы использовать этот метод в быстрой

func makeObjectsPerformSelector(_ aSelector: Selector)

но когда я пытаюсь, я получаю сообщение об ошибке: 'AnyObject[]' does not have a member named 'makeObjectsPerformSelector'

Есть ли способ удалить подменю в swift?

4b9b3361

Ответ 1

Обновлен для Swift 2.0 (Xcode 7)

Используйте forEach:

self.view.subviews.forEach { subview in
    subview.removeFromSuperview()
}

Или вот так:

view.subviews.forEach { $0.removeFromSuperview() }

Ответ 2

Он работает только с объектами NSArray и NSMutableArray.

Это будет работать:

let ar: NSArray = [obj1, obj2, obj3]
ar.makeObjectsPerformSelector("someSelector")

Обратите внимание, что если у вас есть Array<AnyObject>, вы можете свободно конвертировать в NSArray и наоборот.

let anNSArray: NSArray = anArrayOfAnyObject
anNSArray.makeObjectsPerformSelector( "someSelector")

Ответ 3

Начиная с Xcode 7, полное семейство методов performSelector доступно в Swift, включая makeObjectsPerformSelector() для NSArray.