---
title: "protocol_addProperty(_:_:_:_:_:_:)"
framework: Objective-C Runtime
role: symbol
role_heading: Function
platforms: [iOS 4.3+, iPadOS 4.3+, Mac Catalyst 13.1+, macOS 10.7+, tvOS 9.0+, visionOS 1.0+, watchOS 1.0+]
path: "objectivec/protocol_addproperty(_:_:_:_:_:_:)"
---

# protocol_addProperty(_:_:_:_:_:_:)

Adds a property to a protocol that is under construction.

## Declaration

```swift
func protocol_addProperty(_ proto: Protocol, _ name: UnsafePointer<CChar>, _ attributes: UnsafePointer<objc_property_attribute_t>?, _ attributeCount: UInt32, _ isRequiredProperty: Bool, _ isInstanceProperty: Bool)
```

## Parameters

- `proto`: The protocol you want to add a property to.
- `name`: The name of the property you want to add.
- `attributes`: An array of property attributes.
- `attributeCount`: The number of properties in attributes.
- `isRequiredProperty`: A Boolean indicating whether the property’s accessor methods are required methods of the proto protocol. If doc://com.apple.objectivec/documentation/ObjectiveC/YES, the property’s accessor methods are required methods; if doc://com.apple.objectivec/documentation/ObjectiveC/NO, the property’s accessor methods are optional methods.
- `isInstanceProperty`: A Boolean indicating whether the property’s accessor methods are instance methods. If doc://com.apple.objectivec/documentation/ObjectiveC/YES, the property’s accessor methods are instance methods. doc://com.apple.objectivec/documentation/ObjectiveC/YES is the only value allowed for a property. As a result, if you set this value to doc://com.apple.objectivec/documentation/ObjectiveC/NO, the property will not be added to the protocol.

## Discussion

Discussion The protocol you want to add the property to must be under construction—allocated but not yet registered with the Objective-C runtime (via the objc_registerProtocol(_:) function).

## See Also

### Working with Protocols

- [objc_getProtocol(_:)](objectivec/objc_getprotocol(_:).md)
- [objc_copyProtocolList(_:)](objectivec/objc_copyprotocollist(_:).md)
- [objc_allocateProtocol(_:)](objectivec/objc_allocateprotocol(_:).md)
- [objc_registerProtocol(_:)](objectivec/objc_registerprotocol(_:).md)
- [protocol_addMethodDescription(_:_:_:_:_:)](objectivec/protocol_addmethoddescription(_:_:_:_:_:).md)
- [protocol_addProtocol(_:_:)](objectivec/protocol_addprotocol(_:_:).md)
- [protocol_getName(_:)](objectivec/protocol_getname(_:).md)
- [protocol_isEqual(_:_:)](objectivec/protocol_isequal(_:_:).md)
- [protocol_copyMethodDescriptionList(_:_:_:_:)](objectivec/protocol_copymethoddescriptionlist(_:_:_:_:).md)
- [protocol_getMethodDescription(_:_:_:_:)](objectivec/protocol_getmethoddescription(_:_:_:_:).md)
- [protocol_copyPropertyList(_:_:)](objectivec/protocol_copypropertylist(_:_:).md)
- [protocol_getProperty(_:_:_:_:)](objectivec/protocol_getproperty(_:_:_:_:).md)
- [protocol_copyProtocolList(_:_:)](objectivec/protocol_copyprotocollist(_:_:).md)
- [protocol_conformsToProtocol(_:_:)](objectivec/protocol_conformstoprotocol(_:_:).md)
