---
title: Subject
framework: combine
role: symbol
role_heading: Protocol
path: combine/subject
---

# Subject

A publisher that exposes a method for outside callers to publish elements.

## Declaration

```swift
protocol Subject<Output, Failure> : AnyObject, Publisher
```

## Mentioned in

Using Combine for Your App’s Asynchronous Code

## Overview

Overview A subject is a publisher that you can use to ”inject” values into a stream, by calling its send(_:) method. This can be useful for adapting existing imperative code to the Combine model.

## Topics

### Delivering elements to subscribers

- [send(_:)](combine/subject/send(_:).md)
- [send()](combine/subject/send().md)

### Delivering life cycle events to subscribers

- [send(subscription:)](combine/subject/send(subscription:).md)
- [send(completion:)](combine/subject/send(completion:).md)

## Relationships

### Inherits From

- [Publisher](combine/publisher.md)

### Conforming Types

- [CurrentValueSubject](combine/currentvaluesubject.md)
- [PassthroughSubject](combine/passthroughsubject.md)

## See Also

### Subjects

- [CurrentValueSubject](combine/currentvaluesubject.md)
- [PassthroughSubject](combine/passthroughsubject.md)
