{"id":1365,"date":"2021-04-02T19:19:47","date_gmt":"2021-04-03T02:19:47","guid":{"rendered":"https:\/\/coderpad-staging.io\/?post_type=programming-language&#038;p=1095"},"modified":"2023-06-06T06:04:47","modified_gmt":"2023-06-06T13:04:47","slug":"objective-c","status":"publish","type":"programming-language","link":"https:\/\/coderpad.io\/languages\/objective-c\/","title":{"rendered":"Objective-C"},"content":{"rendered":"\n<p>While we don\u2019t run Objective-C on native OSX, we do run it in the latest <code>clang <\/code>with <code>objc<\/code>. This lets you include classes like&nbsp;<code>NSString<\/code>&nbsp;and so forth largely as you normally would.<\/p>\n\n\n\n<p>Your code is compiled with&#8230;<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"Objective-C\" data-shcb-language-slug=\"objectivec\"><span><code class=\"hljs language-objectivec shcb-wrap-lines\">clang `gnustep-config --objc-flags` `gnustep-config --objc-libs` \\\n  -fobjc-arc -fobjc-nonfragile-abi -lobjc -lgnustep-base -ldispatch\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Objective-C<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">objectivec<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>&#8230;which activates automatic reference counting and the nonfragile ABI.<\/p>\n\n\n\n<p>You should define an&nbsp;<code>int main()<\/code>&nbsp;function.<\/p>\n\n\n\n<p>To use the linked implementation of Apple\u2019s&nbsp;<a href=\"https:\/\/github.com\/apple\/swift-corelibs-libdispatch\" target=\"_blank\" rel=\"noopener\">Grand Central Dispatch<\/a>, call the appropriate&nbsp;<code>dispatch<\/code>&nbsp;methods:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"Objective-C\" data-shcb-language-slug=\"objectivec\"><span><code class=\"hljs language-objectivec shcb-wrap-lines\"><span class=\"hljs-meta\">#import <span class=\"hljs-meta-string\">&lt;stdio.h&gt;<\/span><\/span>\n<span class=\"hljs-meta\">#<span class=\"hljs-meta-keyword\">include<\/span> <span class=\"hljs-meta-string\">&lt;dispatch\/dispatch.h&gt;<\/span><\/span>\n\n<span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> timer_did_fire(<span class=\"hljs-keyword\">void<\/span> *context) {\n    printf(<span class=\"hljs-string\">\"Strawberry fields...\\n\"<\/span>);\n}\n\n<span class=\"hljs-keyword\">int<\/span> main (<span class=\"hljs-keyword\">int<\/span> argc, <span class=\"hljs-keyword\">const<\/span> <span class=\"hljs-keyword\">char<\/span> * argv&#91;])\n{\n    dispatch_source_t timer = dispatch_source_create(\n        DISPATCH_SOURCE_TYPE_TIMER, <span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">0<\/span>, dispatch_get_main_queue());\n\n    dispatch_source_set_event_handler_f(timer, timer_did_fire);\n    dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, <span class=\"hljs-number\">1<\/span> * <span class=\"hljs-built_in\">NSEC_PER_SEC<\/span>,\n                              <span class=\"hljs-number\">0.5<\/span> * <span class=\"hljs-built_in\">NSEC_PER_SEC<\/span>);\n    dispatch_resume(timer);\n    dispatch_main();\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Objective-C<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">objectivec<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>","protected":false},"parent":0,"menu_order":0,"template":"","class_list":["post-1365","programming-language","type-programming-language","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/programming-language\/1365","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/programming-language"}],"about":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/types\/programming-language"}],"wp:attachment":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/media?parent=1365"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}