diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp
index c8a354811f8adf54b884fe8007fe1df1627d59d1..5b39dfa83854df691cb7b75cd92ae0cac91217ff 100644
--- a/src/shared/cplusplus/Parser.cpp
+++ b/src/shared/cplusplus/Parser.cpp
@@ -4092,7 +4092,21 @@ bool Parser::parseObjCMethodDefinitionList()
             break;
         }
 
-        // TODO: @dynamic
+        case T_AT_DYNAMIC: {
+            consumeToken();
+            unsigned identifier_token = 0;
+            match(T_IDENTIFIER, &identifier_token);
+
+            while (LA() == T_COMMA) {
+                consumeToken();
+                match(T_IDENTIFIER, &identifier_token);
+            }
+
+            unsigned semicolon_token = 0;
+            match(T_SEMICOLON, &semicolon_token);
+
+            break;
+        }
 
         default:
             if (LA() == T_EXTERN && LA(2) == T_STRING_LITERAL) {