{"id":10451,"date":"2014-02-12T00:00:00","date_gmt":"2014-02-12T00:00:00","guid":{"rendered":"https:\/\/dev95.site\/go-for-objective-c-developers\/"},"modified":"2014-02-12T00:00:00","modified_gmt":"2014-02-12T00:00:00","slug":"go-for-objective-c-developers","status":"publish","type":"post","link":"https:\/\/dev95.site\/ar\/go-for-objective-c-developers\/","title":{"rendered":"Go for Objective-C developers"},"content":{"rendered":"<div id=\"dev95-1804157657\" class=\"dev95-- dev95-entity-placement\" role=\"region\" aria-label=\"\u0627\u0644\u0625\u0639\u0644\u0627\u0646\u0627\u062a\"><script async=\"async\" data-cfasync=\"false\" src=\"https:\/\/pl27862732.profitableratecpmnetwork.com\/2ad7a50e0bbc23ac6801d7b77c501463\/invoke.js\"><\/script>\r\n<div id=\"container-2ad7a50e0bbc23ac6801d7b77c501463\"><\/div><\/div><div id=\"dev95-225158574\" class=\"dev95-before-content dev95-entity-placement\" role=\"region\" aria-label=\"\u0627\u0644\u0625\u0639\u0644\u0627\u0646\u0627\u062a\"><p style=\"text-align: center;\"><strong>Stop wasting time on dead links! \ud83d\uded1 This smart platform automatically detects your device and country to give you the exact best offer instantly. Check it out now 100% free! \ud83d\udc47<\/strong><br data-sfc-root=\"ep\" data-sfc-pl=\"|||[]\" data-complete=\"true\" data-copy-service-computed-style=\"font-family: Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none; border-bottom: 0px rgb(10, 10, 10);\" \/><a href=\"https:\/\/www.profitableratecpmnetwork.com\/pvhx5mbcc?key=ff7d362db3c20bc86fad685cc94f1fc4\">\ud83d\udd17 <strong class=\"rQesXe MPyX\" data-sfc-cp=\"\" data-sfc-root=\"ep\" data-complete=\"true\" aria-owns=\"action-menu-parent-container\" data-copy-service-computed-style=\"font-family: Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 700; margin: 0px; text-decoration: none; border-bottom: 0px rgb(10, 10, 10);\">[Click here]<\/strong><\/a><\/p>\n<\/div><div>\n<p>I\u2019ve been doing Objective-C for almost 5 years (woo!), so at this point I think I have a better understanding than most of Apple\u2019s motivations and intentions, with relation to building the language.<\/p><div id=\"dev95-855076991\" class=\"dev95- dev95-entity-placement\" role=\"region\" aria-label=\"\u0627\u0644\u0625\u0639\u0644\u0627\u0646\u0627\u062a\"><center>\r\n<script>\r\n  atOptions = {\r\n    'key' : '4ba6b6513c00e0ba76511f798ae56401',\r\n    'format' : 'iframe',\r\n    'height' : 50,\r\n    'width' : 320,\r\n    'params' : {}\r\n  };\r\n<\/script>\r\n<script src=\"https:\/\/www.highrevenueformat.com\/4ba6b6513c00e0ba76511f798ae56401\/invoke.js\"><\/script>\r\n\t<\/center><\/div>\n<p>That said, recently I\u2019ve been loving working with Go, and there\u2019s a few reasons for that.<\/p>\n<p><!--preview-snippet--><\/p>\n<h3 id=\"not-traditionally-object-oriented\" style=\"position:relative;\"><a href=\"https:\/\/fabisevi.ch\/2014\/02\/12\/go-for-objective-c-developers\/#not-traditionally-object-oriented\" aria-label=\"not traditionally object oriented permalink\" class=\"anchor before\"><svg class=\"header-link\" aria-hidden=\"true\" height=\"24\" version=\"1.1\" viewbox=\"0.5 -2 16 16\" width=\"24\"><path fill=\"currentColor\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"><\/path><\/svg><\/a>Not traditionally object-oriented<\/h3>\n<p>With the rise of ReactiveCocoa, I\u2019ve been thinking about what programming principles might work for UI-driven frameworks. Go is not traditionally Object-Oriented. You cannot inherit your <code class=\"language-text\">Cat<\/code> class from <code class=\"language-text\">Animal<\/code>, but you can anonymously embed an <code class=\"language-text\">Animal<\/code> into your <code class=\"language-text\">Cat<\/code>, so it gets all the traits of <code class=\"language-text\">Animal<\/code>. That\u2019s because you don\u2019t have objects, you have structs and interfaces. Interfaces are functions that act on structs. This doesn\u2019t sound quite that different than OO methodologies, but it\u2019s a big distinction when thinking about how to construct your software.<\/p>\n<p>Gothic (go-like) programming seems like it would be a great style for people looking to explore signal-driven frameworks, which Go is great for.<\/p>\n<h3 id=\"type-inference\" style=\"position:relative;\"><a href=\"https:\/\/fabisevi.ch\/2014\/02\/12\/go-for-objective-c-developers\/#type-inference\" aria-label=\"type inference permalink\" class=\"anchor before\"><svg class=\"header-link\" aria-hidden=\"true\" height=\"24\" version=\"1.1\" viewbox=\"0.5 -2 16 16\" width=\"24\"><path fill=\"currentColor\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"><\/path><\/svg><\/a>Type inference<\/h3>\n<div class=\"gatsby-highlight\" data-language=\"objective-c\">\n<pre class=\"language-objective-c\"><code class=\"language-objective-c\">UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480))]<\/code><\/pre>\n<\/div>\n<p>I write that dozens of times per day when doing iOS development. In Go, it would look like this:<\/p>\n<div class=\"gatsby-highlight\" data-language=\"go\">\n<pre class=\"language-go\"><code class=\"language-go\">view <span class=\"token operator\">:=<\/span> UIView<span class=\"token punctuation\">{<\/span>CGRect<span class=\"token punctuation\">{<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">320<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">480<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<\/div>\n<p>Considering how often I write that, I would love type inference to clean up my code. Type inference is the biggest reason writing in Go feels like working with a scripting language.<\/p>\n<h3 id=\"garbage-collection\" style=\"position:relative;\"><a href=\"https:\/\/fabisevi.ch\/2014\/02\/12\/go-for-objective-c-developers\/#garbage-collection\" aria-label=\"garbage collection permalink\" class=\"anchor before\"><svg class=\"header-link\" aria-hidden=\"true\" height=\"24\" version=\"1.1\" viewbox=\"0.5 -2 16 16\" width=\"24\"><path fill=\"currentColor\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"><\/path><\/svg><\/a>Garbage collection<\/h3>\n<p>Let me start off by saying, ARC is amazing. I think what Apple\u2019s done with LLVM, and what it\u2019s enabled is one of the best things I\u2019ve seen in my short career. That said, not having to worry about ARC not cleaning up properly, or where to use a strong vs. weak reference does get tenuous. If software development is about reducing mental strain on a programmer, then garbage collection is something that goes a long way to that.<\/p>\n<h3 id=\"native-concurrency\" style=\"position:relative;\"><a href=\"https:\/\/fabisevi.ch\/2014\/02\/12\/go-for-objective-c-developers\/#native-concurrency\" aria-label=\"native concurrency permalink\" class=\"anchor before\"><svg class=\"header-link\" aria-hidden=\"true\" height=\"24\" version=\"1.1\" viewbox=\"0.5 -2 16 16\" width=\"24\"><path fill=\"currentColor\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"><\/path><\/svg><\/a>Native concurrency<\/h3>\n<p>Go handles concurrency in a few ways. The simplest is to just stick the go keyword in front of your method, and it will run it asynchronously.<\/p>\n<div class=\"gatsby-highlight\" data-language=\"go\">\n<pre class=\"language-go\"><code class=\"language-go\">doSomethingAwesome      <span class=\"token comment\">\/\/ Runs synchronous <\/span>\n<span class=\"token keyword\">go<\/span> doSomethingAwesome   <span class=\"token comment\">\/\/ Runs asynchronous<\/span><\/code><\/pre>\n<\/div>\n<p>The second is channels. As an Objective-C developer you can think of channels similarly to <code class=\"language-text\">NSNotification<\/code>s. You pass values to a certain channel, and it responds accordingly, as you\u2019ve set it up to respond. One nice thing is that unlike <code class=\"language-text\">NSNotification<\/code> it\u2019s statically typed, because this mechanism is built into the Go language. Channels also can talk in both directions, so you can pass messages back and forth along a channel. package main<\/p>\n<div class=\"gatsby-highlight\" data-language=\"go\">\n<pre class=\"language-go\"><code class=\"language-go\"><span class=\"token keyword\">import<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token string\">\"fmt\"<\/span> <span class=\"token string\">\"time\"<\/span>\n<span class=\"token punctuation\">)<\/span>\n\n<span class=\"token keyword\">func<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> \n    ok <span class=\"token operator\">:=<\/span> <span class=\"token function\">make<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">chan<\/span> <span class=\"token builtin\">bool<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span>\n    <span class=\"token keyword\">go<\/span> <span class=\"token function\">doSomething<\/span><span class=\"token punctuation\">(<\/span>ok<span class=\"token punctuation\">)<\/span>\n    fmt<span class=\"token punctuation\">.<\/span><span class=\"token function\">Println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Waiting\"<\/span><span class=\"token punctuation\">)<\/span>\n    <span class=\"token operator\">&lt;-<\/span>ok\n    fmt<span class=\"token punctuation\">.<\/span><span class=\"token function\">Println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Did something\"<\/span><span class=\"token punctuation\">)<\/span> \n<span class=\"token punctuation\">}<\/span> \n\n<span class=\"token keyword\">func<\/span> <span class=\"token function\">doSomething<\/span><span class=\"token punctuation\">(<\/span>ok <span class=\"token keyword\">chan<\/span> <span class=\"token builtin\">bool<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\n    time<span class=\"token punctuation\">.<\/span><span class=\"token function\">Sleep<\/span><span class=\"token punctuation\">(<\/span>time<span class=\"token punctuation\">.<\/span>Second<span class=\"token punctuation\">)<\/span>\n    ok <span class=\"token operator\">&lt;-<\/span> <span class=\"token boolean\">true<\/span>\n<span class=\"token punctuation\">}<\/span><\/code><\/pre>\n<\/div>\n<p>I don\u2019t know about you, but I\u2019d much rather be doing concurrency this way rather than thinking about what thread to run a function on.<\/p>\n<h3 id=\"packages\" style=\"position:relative;\"><a href=\"https:\/\/fabisevi.ch\/2014\/02\/12\/go-for-objective-c-developers\/#packages\" aria-label=\"packages permalink\" class=\"anchor before\"><svg class=\"header-link\" aria-hidden=\"true\" height=\"24\" version=\"1.1\" viewbox=\"0.5 -2 16 16\" width=\"24\"><path fill=\"currentColor\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"><\/path><\/svg><\/a>Packages<\/h3>\n<p>One thing that Objective-C has struggled with for 30 years is namespaces. <code class=\"language-text\">JFMyClass<\/code>, <code class=\"language-text\">AFNYourClass<\/code>, <code class=\"language-text\">THOSomeOtherClass<\/code>! All this prefixing is done to avoid collisions. The accepted practice is to now prefix your classes with 3 letters, because that will solve everything obviously. If your implementation of a class has a method <code class=\"language-text\">doSomething<\/code>, and yours does as well, with Objective-C\u2019s dynamic runtime there is no way to know when your version will be ran or mine will. Go solves that in the classic way, with packages. Packages can be built into static libraries, which get put into your go directory (where all libraries are stored on your computer).<\/p>\n<h3 id=\"go-as-a-tool\" style=\"position:relative;\"><a href=\"https:\/\/fabisevi.ch\/2014\/02\/12\/go-for-objective-c-developers\/#go-as-a-tool\" aria-label=\"go as a tool permalink\" class=\"anchor before\"><svg class=\"header-link\" aria-hidden=\"true\" height=\"24\" version=\"1.1\" viewbox=\"0.5 -2 16 16\" width=\"24\"><path fill=\"currentColor\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"><\/path><\/svg><\/a>Go as a tool<\/h3>\n<p>Go has built terrific tooling into the language&#8217;s standard offerings.<\/p>\n<h4 id=\"go-get\" style=\"position:relative;\"><a href=\"https:\/\/fabisevi.ch\/2014\/02\/12\/go-for-objective-c-developers\/#go-get\" aria-label=\"go get permalink\" class=\"anchor before\"><svg class=\"header-link\" aria-hidden=\"true\" height=\"24\" version=\"1.1\" viewbox=\"0.5 -2 16 16\" width=\"24\"><path fill=\"currentColor\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"><\/path><\/svg><\/a>go get<\/h4>\n<p><code class=\"language-text\">go get<\/code> fetches remote repositories and installs the packages and dependencies. In fact, you can even import from a url, like <code class=\"language-text\">import \u201cgithub.com\/go-sql-driver\/mysql\u201d<\/code> and have your MySQL driver ready to go when you compile your application.<\/p>\n<h4 id=\"go-fmt\" style=\"position:relative;\"><a href=\"https:\/\/fabisevi.ch\/2014\/02\/12\/go-for-objective-c-developers\/#go-fmt\" aria-label=\"go fmt permalink\" class=\"anchor before\"><svg class=\"header-link\" aria-hidden=\"true\" height=\"24\" version=\"1.1\" viewbox=\"0.5 -2 16 16\" width=\"24\"><path fill=\"currentColor\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"><\/path><\/svg><\/a>go fmt<\/h4>\n<p>Isn\u2019t it awful when you use BSD style brackets, and your coworker uses Allman, and you want to use K&amp;R? Go only has one style. You run the <code class=\"language-text\">go fmt<\/code> tool, and it automagically converts all the brackets, new lines, and everything else to one standard go format. Most IDE\u2019s have built in support which runs the go fmt tool when you save the file, so your code always looks right.<\/p>\n<h4 id=\"go-test\" style=\"position:relative;\"><a href=\"https:\/\/fabisevi.ch\/2014\/02\/12\/go-for-objective-c-developers\/#go-test\" aria-label=\"go test permalink\" class=\"anchor before\"><svg class=\"header-link\" aria-hidden=\"true\" height=\"24\" version=\"1.1\" viewbox=\"0.5 -2 16 16\" width=\"24\"><path fill=\"currentColor\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"><\/path><\/svg><\/a>go test<\/h4>\n<p>Tests are built into the language. Tests live in the same package, so you don\u2019t have to worry about exposing any variables just for your test cases\u2019 sake.<\/p>\n<h4 id=\"go-be-happy\" style=\"position:relative;\"><a href=\"https:\/\/fabisevi.ch\/2014\/02\/12\/go-for-objective-c-developers\/#go-be-happy\" aria-label=\"go be happy permalink\" class=\"anchor before\"><svg class=\"header-link\" aria-hidden=\"true\" height=\"24\" version=\"1.1\" viewbox=\"0.5 -2 16 16\" width=\"24\"><path fill=\"currentColor\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"><\/path><\/svg><\/a>go be happy!<\/h4>\n<p>This one is just my personal advice.<\/p>\n<p>Go isn\u2019t the world\u2019s most perfect language, but it\u2019s one of the biggest advancements for software development principles in a while. That\u2019s why I\u2019m excited about it, and I\u2019d implore you all to try Go!<\/p>\n<p>As usual, if you have any feedback feel free to leave a comment for me <a href=\"https:\/\/www.twitter.com\/mergesort\">@mergesort<\/a> or on this Hacker News <a href=\"https:\/\/news.ycombinator.com\/item?id=7226218\">thread<\/a>.<\/p>\n<\/div>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_10451\" class=\"pvc_stats total_only  \" data-element-id=\"10451\" style=\"\"><i class=\"pvc-stats-icon large\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/i0.wp.com\/dev95.site\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif?resize=16%2C16&#038;ssl=1\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n<div id=\"dev95-3953384785\" class=\"dev95-after-content dev95-entity-placement\" role=\"region\" aria-label=\"\u0627\u0644\u0625\u0639\u0644\u0627\u0646\u0627\u062a\"><p style=\"text-align: center;\"><strong>Finally, a link that actually works for your region and device! \ud83c\udf0d Get instant access to the top exclusive offers tailored just for you right now. Don&#8217;t miss out, click here! \ud83d\udc47<\/strong><br data-sfc-root=\"ep\" data-sfc-pl=\"|||[]\" data-complete=\"true\" data-copy-service-computed-style=\"font-family: Arial, sans-serif, &quot;Noto Color Emoji&quot;; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none; border-bottom: 0px rgb(10, 10, 10);\" \/><a href=\"https:\/\/www.profitableratecpmnetwork.com\/uzeja8ahze?key=bc876be53d6ad0ff6370ab8ea030e479\"><strong>\ud83d\udd17 [Click here]<\/strong><\/a><\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>I\u2019ve been doing Objective-C for almost 5 years (woo!), so at this point I think I have a better understanding than most of Apple\u2019s motivations and intentions, with relation to building the language. That said, recently I\u2019ve been loving working<\/p>\n<div class=\"hosteria-entry-more\"><a href=\"https:\/\/dev95.site\/ar\/go-for-objective-c-developers\/\" class=\"no-underline font-light  group-hover:text-primary-800 dark:group-hover:text-primary-300 py-1\">Read more &gt;&gt;&gt;<\/a><\/div>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_10451\" class=\"pvc_stats total_only\" data-element-id=\"10451\" style=\"\"><i class=\"pvc-stats-icon large\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/dev95.site\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=\"0\" \/><\/p>\n<div class=\"pvc_clear\"><\/div>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fp_fajr_begins":"","fp_fajr_iqamah":"","fp_dhuhr_begins":"","fp_dhuhr_iqamah":"","fp_asr_begins":"","fp_asr_iqamah":"","fp_maghrib_begins":"","fp_maghrib_iqamah":"","fp_isha_begins":"","fp_isha_iqamah":"","fp_midnight":"","fp_midnight_name":"","fp_sunrise":"","fp_single_prayer_begins_title":"","fp_single_prayer_iqamah_title":"","fp_prayer_times_for_today":"","fp_hijra_date":"","fp_fajr_name":"","fp_dhuhr_name":"","fp_asr_name":"","fp_maghrib_name":"","fp_isha_name":"","fp_sunrise_name":"","fp_currentDate":"","fp_current_time":"","fp_current_title":"","fp_current_location":"","fp_masjid_name":"","fp_prayer_title":"","fp_next_prayer_iqamah_time":"","fp_next_prayer_iqamah_title":"","fp_next_prayer_begins_time":"","fp_next_prayer_begins_title":"","fp_next_prayer_title":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[37],"tags":[],"class_list":["post-10451","post","type-post","status-publish","format-standard","hentry","category-posts"],"a3_pvc":{"activated":true,"total_views":5,"today_views":0},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Go for Objective-C developers - Dev95<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dev95.site\/ar\/go-for-objective-c-developers\/\" \/>\n<meta property=\"og:locale\" content=\"ar_AR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Go for Objective-C developers - Dev95\" \/>\n<meta property=\"og:description\" content=\"I\u2019ve been doing Objective-C for almost 5 years (woo!), so at this point I think I have a better understanding than most of Apple\u2019s motivations and intentions, with relation to building the language. That said, recently I\u2019ve been loving workingRead more &gt;&gt;&gt;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dev95.site\/ar\/go-for-objective-c-developers\/\" \/>\n<meta property=\"og:site_name\" content=\"Dev95\" \/>\n<meta property=\"article:published_time\" content=\"2014-02-12T00:00:00+00:00\" \/>\n<meta name=\"author\" content=\"dev95\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u0643\u064f\u062a\u0628 \u0628\u0648\u0627\u0633\u0637\u0629\" \/>\n\t<meta name=\"twitter:data1\" content=\"dev95\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u0648\u0642\u062a \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u064f\u0642\u062f\u0651\u0631\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 \u062f\u0642\u0627\u0626\u0642\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/dev95.site\\\/go-for-objective-c-developers\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/go-for-objective-c-developers\\\/\"},\"author\":{\"name\":\"dev95\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#\\\/schema\\\/person\\\/b807805ffe2916206b04d0938bce0298\"},\"headline\":\"Go for Objective-C developers\",\"datePublished\":\"2014-02-12T00:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/go-for-objective-c-developers\\\/\"},\"wordCount\":767,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/#organization\"},\"articleSection\":[\"Posts\"],\"inLanguage\":\"ar\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/dev95.site\\\/go-for-objective-c-developers\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/dev95.site\\\/go-for-objective-c-developers\\\/\",\"url\":\"https:\\\/\\\/dev95.site\\\/go-for-objective-c-developers\\\/\",\"name\":\"Go for Objective-C developers - Dev95\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/#website\"},\"datePublished\":\"2014-02-12T00:00:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/go-for-objective-c-developers\\\/#breadcrumb\"},\"inLanguage\":\"ar\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/dev95.site\\\/go-for-objective-c-developers\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/dev95.site\\\/go-for-objective-c-developers\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/dev95.site\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Go for Objective-C developers\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#website\",\"url\":\"https:\\\/\\\/dev95.site\\\/\",\"name\":\"Dev95\",\"description\":\"Your comprehensive digital platform for knowledge, services, tools, and entertainment.\",\"publisher\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/dev95.site\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ar\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#organization\",\"name\":\"Dev95\",\"url\":\"https:\\\/\\\/dev95.site\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/dev95.site\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/rbrrbr-6.png?fit=512%2C512&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/dev95.site\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/rbrrbr-6.png?fit=512%2C512&ssl=1\",\"width\":512,\"height\":512,\"caption\":\"Dev95\"},\"image\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#\\\/schema\\\/person\\\/b807805ffe2916206b04d0938bce0298\",\"name\":\"dev95\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g\",\"caption\":\"dev95\"},\"url\":\"https:\\\/\\\/dev95.site\\\/ar\\\/author\\\/mohammad\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Go for Objective-C developers - Dev95","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dev95.site\/ar\/go-for-objective-c-developers\/","og_locale":"ar_AR","og_type":"article","og_title":"Go for Objective-C developers - Dev95","og_description":"I\u2019ve been doing Objective-C for almost 5 years (woo!), so at this point I think I have a better understanding than most of Apple\u2019s motivations and intentions, with relation to building the language. That said, recently I\u2019ve been loving workingRead more &gt;&gt;&gt;","og_url":"https:\/\/dev95.site\/ar\/go-for-objective-c-developers\/","og_site_name":"Dev95","article_published_time":"2014-02-12T00:00:00+00:00","author":"dev95","twitter_card":"summary_large_image","twitter_misc":{"\u0643\u064f\u062a\u0628 \u0628\u0648\u0627\u0633\u0637\u0629":"dev95","\u0648\u0642\u062a \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u064f\u0642\u062f\u0651\u0631":"4 \u062f\u0642\u0627\u0626\u0642"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/dev95.site\/go-for-objective-c-developers\/#article","isPartOf":{"@id":"https:\/\/dev95.site\/go-for-objective-c-developers\/"},"author":{"name":"dev95","@id":"https:\/\/dev95.site\/#\/schema\/person\/b807805ffe2916206b04d0938bce0298"},"headline":"Go for Objective-C developers","datePublished":"2014-02-12T00:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/dev95.site\/go-for-objective-c-developers\/"},"wordCount":767,"commentCount":0,"publisher":{"@id":"https:\/\/dev95.site\/#organization"},"articleSection":["Posts"],"inLanguage":"ar","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/dev95.site\/go-for-objective-c-developers\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/dev95.site\/go-for-objective-c-developers\/","url":"https:\/\/dev95.site\/go-for-objective-c-developers\/","name":"Go for Objective-C developers - Dev95","isPartOf":{"@id":"https:\/\/dev95.site\/#website"},"datePublished":"2014-02-12T00:00:00+00:00","breadcrumb":{"@id":"https:\/\/dev95.site\/go-for-objective-c-developers\/#breadcrumb"},"inLanguage":"ar","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dev95.site\/go-for-objective-c-developers\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/dev95.site\/go-for-objective-c-developers\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dev95.site\/"},{"@type":"ListItem","position":2,"name":"Go for Objective-C developers"}]},{"@type":"WebSite","@id":"https:\/\/dev95.site\/#website","url":"https:\/\/dev95.site\/","name":"Dev95","description":"\u0645\u0646\u0635\u062a\u0643 \u0627\u0644\u0631\u0642\u0645\u064a\u0629 \u0627\u0644\u0634\u0627\u0645\u0644\u0629 \u0644\u0644\u0645\u0639\u0631\u0641\u0629 \u0648\u0627\u0644\u062e\u062f\u0645\u0627\u062a \u0648\u0627\u0644\u0623\u062f\u0648\u0627\u062a \u0648\u0627\u0644\u062a\u0631\u0641\u064a\u0647.","publisher":{"@id":"https:\/\/dev95.site\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dev95.site\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ar"},{"@type":"Organization","@id":"https:\/\/dev95.site\/#organization","name":"Dev95","url":"https:\/\/dev95.site\/","logo":{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/dev95.site\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/dev95.site\/wp-content\/uploads\/2026\/07\/rbrrbr-6.png?fit=512%2C512&ssl=1","contentUrl":"https:\/\/i0.wp.com\/dev95.site\/wp-content\/uploads\/2026\/07\/rbrrbr-6.png?fit=512%2C512&ssl=1","width":512,"height":512,"caption":"Dev95"},"image":{"@id":"https:\/\/dev95.site\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/dev95.site\/#\/schema\/person\/b807805ffe2916206b04d0938bce0298","name":"dev95","image":{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/secure.gravatar.com\/avatar\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g","caption":"dev95"},"url":"https:\/\/dev95.site\/ar\/author\/mohammad\/"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/posts\/10451","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/comments?post=10451"}],"version-history":[{"count":0,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/posts\/10451\/revisions"}],"wp:attachment":[{"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/media?parent=10451"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/categories?post=10451"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/tags?post=10451"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}