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Селектор.
Возвращаемое значение
YEStrueесли класс получения отвечает наaSelectorсообщения, иначеNOfalse.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.0 и позже.
-
Возвраты
self(объект класса).Объявление
Swift
class func `class`() -> AnyClassObjective 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 и позже.
