---
title: NSObjectProtocol
framework: objectivec
role: symbol
role_heading: Protocol
path: objectivec/nsobjectprotocol
---

# NSObjectProtocol

The group of methods that are fundamental to all Objective-C objects.

## Declaration

```swift
protocol NSObjectProtocol
```

## Overview

Overview note: This protocol is imported into Swift with the name NSObjectProtocol. An object that conforms to this protocol can be considered a first-class object. Such an object can be asked about its: Class, and the place of its class in the inheritance hierarchy. Conformance to protocols. Ability to respond to a particular message. The Cocoa root class NSObject adopts this protocol, so all objects inheriting from NSObject have the features described by this protocol.

## Topics

### Identifying Classes

- [superclass](objectivec/nsobjectprotocol/superclass.md)

### Identifying and Comparing Objects

- [isEqual(_:)](objectivec/nsobjectprotocol/isequal(_:).md)
- [hash](objectivec/nsobjectprotocol/hash.md)
- [self()](objectivec/nsobjectprotocol/self().md)

### Testing Object Inheritance, Behavior, and Conformance

- [isKind(of:)](objectivec/nsobjectprotocol/iskind(of:).md)
- [isMember(of:)](objectivec/nsobjectprotocol/ismember(of:).md)
- [responds(to:)](objectivec/nsobjectprotocol/responds(to:).md)
- [conforms(to:)](objectivec/nsobjectprotocol/conforms(to:).md)

### Describing Objects

- [description](objectivec/nsobjectprotocol/description.md)
- [debugDescription](objectivec/nsobjectprotocol/debugdescription.md)

### Sending Messages

- [perform(_:)](objectivec/nsobjectprotocol/perform(_:).md)
- [perform(_:with:)](objectivec/nsobjectprotocol/perform(_:with:).md)
- [perform(_:with:with:)](objectivec/nsobjectprotocol/perform(_:with:with:).md)

### Identifying Proxies

- [isProxy()](objectivec/nsobjectprotocol/isproxy().md)

## Relationships

### Conforming Types

- [NSObject](objectivec/nsobject-swift.class.md)
