Index: configure.ac ================================================================== --- configure.ac +++ configure.ac @@ -22,10 +22,12 @@ CPPFLAGS="$CPPFLAGS $OBJCPPFLAGS $($OBJFW_CONFIG --cppflags)" OBJCFLAGS="$OBJCFLAGS -Wall $($OBJFW_CONFIG --objcflags)" LDFLAGS="$LDFLAGS $($OBJFW_CONFIG --ldflags)" LIBS="$LIBS $($OBJFW_CONFIG --libs)" +AX_CHECK_COMPILER_FLAGS(-Watomic-properties, + [OBJCFLAGS="$OBJCFLAGS -Watomic-properties"]) AX_CHECK_COMPILER_FLAGS(-Wdocumentation, [OBJCFLAGS="$OBJCFLAGS -Wdocumentation"]) AC_ARG_ENABLE(shared, AS_HELP_STRING([--disable-shared], [do not build shared library])) Index: src/XMPPConnection.h ================================================================== --- src/XMPPConnection.h +++ src/XMPPConnection.h @@ -217,41 +217,41 @@ @property (readonly, nonatomic) XMPPJID *JID; /*! * The port to connect to. */ -@property uint16_t port; +@property (nonatomic) uint16_t port; /*! * An object for data storage, conforming to the XMPPStorage protocol. */ -@property OF_NULLABLE_PROPERTY (assign) id dataStorage; +@property OF_NULLABLE_PROPERTY (nonatomic, assign) id dataStorage; /*! * The socket used for the connection. */ @property (readonly, nonatomic) OFTCPSocket *socket; /*! * Whether encryption is required. */ -@property bool encryptionRequired; +@property (nonatomic) bool encryptionRequired; /*! * Whether the connection is encrypted. */ -@property (readonly) bool encrypted; +@property (readonly, nonatomic) bool encrypted; /*! * Whether roster versioning is supported. */ -@property (readonly) bool supportsRosterVersioning; +@property (readonly, nonatomic) bool supportsRosterVersioning; /*! * Whether stream management is supported. */ -@property (readonly) bool supportsStreamManagement; +@property (readonly, nonatomic) bool supportsStreamManagement; /*! * Creates a new autoreleased XMPPConnection. * * @return A new autoreleased XMPPConnection Index: src/XMPPDiscoEntity.h ================================================================== --- src/XMPPDiscoEntity.h +++ src/XMPPDiscoEntity.h @@ -46,16 +46,16 @@ * responses for * * This usually contains at least all immediate child nodes, but may contain * any number of nodes nested more deeply. */ -@property (readonly) OFDictionary *discoNodes; +@property (readonly, nonatomic) OFDictionary *discoNodes; /*! * The node advertised for the entity's capabilites. */ -@property (readonly) OFString *capsNode; +@property (readonly, nonatomic) OFString *capsNode; + (instancetype)discoNodeWithJID: (XMPPJID *)JID node: (nullable OFString *)node OF_UNAVAILABLE; + (instancetype)discoNodeWithJID: (XMPPJID *)JID node: (nullable OFString *)node Index: src/XMPPMessage.h ================================================================== --- src/XMPPMessage.h +++ src/XMPPMessage.h @@ -27,12 +27,14 @@ /*! * @brief A class describing a message stanza. */ @interface XMPPMessage: XMPPStanza -/*! The text content of the body of the message. */ -@property (copy) OFString *body; +/*! + * The text content of the body of the message. + */ +@property (nonatomic, copy) OFString *body; /*! * @brief Creates a new autoreleased XMPPMessage. * * @return A new autoreleased XMPPMessage Index: src/XMPPRoster.h ================================================================== --- src/XMPPRoster.h +++ src/XMPPRoster.h @@ -70,11 +70,11 @@ } /*! * @brief The connection to which the roster belongs */ -@property (readonly, assign) XMPPConnection *connection; +@property (readonly, nonatomic) XMPPConnection *connection; /*! * @brief An object for data storage, conforming to the XMPPStorage protocol. * * Inherited from the connection if not overridden. Index: src/XMPPSRVLookup.h ================================================================== --- src/XMPPSRVLookup.h +++ src/XMPPSRVLookup.h @@ -36,14 +36,14 @@ uint32_t _accumulatedWeight; uint16_t _port; OFString *_target; } -@property (readonly) uint16_t priority; -@property (readonly) uint16_t weight; -@property uint32_t accumulatedWeight; -@property (readonly) uint16_t port; +@property (readonly, nonatomic) uint16_t priority; +@property (readonly, nonatomic) uint16_t weight; +@property (nonatomic) uint32_t accumulatedWeight; +@property (readonly, nonatomic) uint16_t port; @property (readonly, nonatomic) OFString *target; + (instancetype)entryWithPriority: (uint16_t)priority weight: (uint16_t)weight port: (uint16_t)port