NSProxy
NSProxy
абстрактный суперкласс, определяющий API для объектов, действующих как заместители для других объектов или для объектов, еще не существующих. Как правило, сообщение к прокси передается к реальному объекту или заставляет прокси загружать (или преобразовывать себя в) реальный объект. Подклассы NSProxy
может использоваться для реализации прозрачного распределенного обмена сообщениями (например, NSDistantObject
) или для ленивого инстанцирования объектов, которые являются дорогими для создания.
NSProxy
реализует основные методы, требуемые корневого класса, включая определенных в NSObject
протокол. Однако как абстрактный класс это не обеспечивает метод инициализации, и это повышает исключение после получения любого сообщения, на которое это не отвечает. Конкретный подкласс должен поэтому обеспечить инициализацию или метод создания и переопределить forwardInvocation:
и methodSignatureForSelector:
методы для обработки сообщений, что это не реализует себя. Реализация подкласса forwardInvocation:
должен сделать то, что необходимо для обработки вызова, такого как передача вызова по сети или загрузке реального объекта и передаче его вызов. methodSignatureForSelector:
требуется, чтобы предоставлять информацию типа аргумента для данного сообщения; реализация подкласса должна быть в состоянии определить типы аргумента для сообщений, которые она должна передать и должна создать NSMethodSignature
возразите соответственно. Посмотрите NSDistantObject
, NSInvocation
, и NSMethodSignature
спецификации класса для получения дополнительной информации.
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает новый экземпляр класса получения
Объявление
Swift
class func alloc() -> Self!
Objective C
+ (id)alloc
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает новый экземпляр класса получения
Объявление
Objective C
+ (id)allocWithZone:(NSZone *)
zone
Возвращаемое значение
Новый экземпляр класса получения, как описано в
NSObject
спецификация класса подallocWithZone:
метод класса.Оператор импорта
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.0 и позже.
-
Освобождает память, занятую получателем.
Объявление
Swift
func dealloc()
Objective C
- (void)dealloc
Обсуждение
Этот метод ведет себя, как описано в
NSObject
спецификация класса подdealloc
метод экземпляра.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Сборщик «мусора» вызывает этот метод на получатель перед избавлением от памяти, которую это использует.
Объявление
Swift
func finalize()
Objective C
- (void)finalize
Обсуждение
Этот метод ведет себя, как описано в
NSObject
спецификация класса подfinalize
метод экземпляра. Обратите внимание на то, что afinalize
метод должен быть ориентирован на многопотоковое исполнение.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.5 и позже.
См. также
-
Передает данный вызов реальному объекту, который представляет прокси.
Объявление
Swift
func forwardInvocation(_
anInvocation
: NSInvocation)Objective C
- (void)forwardInvocation:(NSInvocation *)
anInvocation
Параметры
anInvocation
Вызов для передачи.
Обсуждение
NSProxy
реализация просто повышаетNSInvalidArgumentException
. Переопределите этот метод в своем подклассе для обработкиanInvocation
соответственно, по крайней мере путем установки его возвращаемого значения.Например, если Ваш прокси просто передает сообщения к названной переменной экземпляра
realObject
, это может реализоватьforwardInvocation:
как это:- (void)forwardInvocation:(NSInvocation *)anInvocation
{
[anInvocation setTarget:realObject];
[anInvocation invoke];
return;
}
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
Повышения
NSInvalidArgumentException
. Переопределите этот метод в своем конкретном подклассе для возврата надлежащегоNSMethodSignature
объект для данного селектора и класса Ваши объекты прокси помогает для.Объявление
Objective C
- (NSMethodSignature *)methodSignatureForSelector:(SEL)
aSelector
Параметры
aSelector
Селектор, для которого можно возвратить сигнатуру метода.
Возвращаемое значение
Не применимый. Реализация, предоставленная
NSProxy
повышает исключение.Обсуждение
Обязательно избегите бесконечного цикла при необходимости путем проверки этого
aSelector
не селектор для этого метода самого и не отправляя сообщения, которое могло бы вызвать этот метод.Например, если Ваш прокси просто передает сообщения к названной переменной экземпляра
realObject
, это может реализоватьmethodSignatureForSelector:
как это:– (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
{
return [realObject methodSignatureForSelector:aSelector];
}
Оператор импорта
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.0 и позже.
См. также
methodSignatureForSelector:
(NSObject
)
-
Возвращает булево значение, указывающее, реагирует ли класс получения на данный селектор.
Объявление
Swift
class func respondsToSelector(_
aSelector
: Selector) -> BoolObjective C
+ (BOOL)respondsToSelector:(SEL)
aSelector
Параметры
aSelector
Селектор.
Возвращаемое значение
YES
true
если класс получения отвечает наaSelector
сообщения, иначеNO
false
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвраты
self
(объект класса).Объявление
Swift
class func `class`() -> AnyClass
Objective C
+ (Class)class
Возвращаемое значение
self
. Поскольку это - метод класса, он возвращает объект классаОператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
Строка, содержащая реальное имя класса и ID получателя как шестнадцатеричное число. (только для чтения)
Объявление
Swift
var description: String { get }
Objective C
@property(readonly, copy) NSString *description
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
debugDescription debugDescription
СвойствоСтрока, содержащая реальное имя класса и ID получателя как шестнадцатеричное число. (только для чтения)
Объявление
Swift
var debugDescription: String { get }
Objective C
@property(readonly, copy) NSString *debugDescription
Обсуждение
Это позволяет этот метод, объявленный
NSObject
протокол, который будет реализован в классах разработчика, не заставляя проблему быть отмеченным в iOS и хранилищах приложения Mac, где иначе это могло бы быть похожим на разработчика, переопределяет закрытый метод в Основе.Реализация этого метода является дополнительной, так убедиться протестировать на его существование прежде, чем попытаться вызвать его.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.8 и позже.