{"id":13332,"date":"2022-10-03T19:00:02","date_gmt":"2022-10-03T13:30:02","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-in-these-three-variable-definition\/"},"modified":"2022-10-03T19:00:02","modified_gmt":"2022-10-03T13:30:02","slug":"solved-whats-the-difference-in-these-three-variable-definition","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-in-these-three-variable-definition\/","title":{"rendered":"[Solved] What&#8217;s the difference in these three variable definition?"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-37506349\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"37506349\" data-parentid=\"37505953\" data-score=\"0\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>Of your three examples, <code>_foo1<\/code> and <code>_foo3<\/code> are both instance variables (ivars) and are functionally equivalent (though there are some old compilers that that didn&#8217;t permit ivars in the <code>@implementation<\/code>). I&#8217;ve seen people argue passionately for the <code>@implementation<\/code> pattern, your  <code>_foo3<\/code> example. See the somewhat dated Where to put iVars in &#8220;modern&#8221; Objective-C? But I prefer to define my ivars in the private extension (your <code>_foo1<\/code> pattern), to keep properties and ivars together. But, I&#8217;ll leave it there as it&#8217;s a matter of personal opinion (and therefore not appropriate for SO). <\/p>\n<p>The second pattern, <code>foo2<\/code>, is a property, and is a whole different kettle of fish: Regarding properties vs ivars, Apple advises using properties rather than ivars. In fact, they start the <em>You Can Define Instance Variables without Properties<\/em> section of the <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.apple.com\/library\/ios\/documentation\/Cocoa\/Conceptual\/ProgrammingWithObjectiveC\/EncapsulatingData\/EncapsulatingData.html#\/\/apple_ref\/doc\/uid\/TP40011210-CH5-SW1\">Encapsulating Data<\/a> chapter of the <em>Programming with Objective-C<\/em> with the caveat, &#8220;It\u2019s best practice to use a property on an object any time you need to keep track of a value or another object.&#8221; <\/p>\n<p>Some will argue for ivars over properties for their theoretical performance benefit, but that seems like premature optimization to me, sacrificing code maintenance for negligible performance difference. The advantage of the property is that you can enjoy automatic memory semantics (<code>copy<\/code> vs <code>strong<\/code> vs <code>weak<\/code>) and your code using the property is abstracted away from any special implementation details of the property, were there any.<\/p>\n<p>If you&#8217;re looking explanations &#8220;in detail&#8221;, I&#8217;d suggest you refer to the aforementioned <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.apple.com\/library\/ios\/documentation\/Cocoa\/Conceptual\/ProgrammingWithObjectiveC\/EncapsulatingData\/EncapsulatingData.html#\/\/apple_ref\/doc\/uid\/TP40011210-CH5-SW1\">Programming with Objective-C<\/a> guide.<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">0<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved What&#8217;s the difference in these three variable definition? <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] Of your three examples, _foo1 and _foo3 are both instance variables (ivars) and are functionally equivalent (though there are some old compilers that that didn&#8217;t permit ivars in the @implementation). I&#8217;ve seen people argue passionately for the @implementation pattern, your _foo3 example. See the somewhat dated Where to put iVars in &#8220;modern&#8221; Objective-C? But &#8230; <a title=\"[Solved] What&#8217;s the difference in these three variable definition?\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-in-these-three-variable-definition\/\" aria-label=\"More on [Solved] What&#8217;s the difference in these three variable definition?\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[470],"class_list":["post-13332","post","type-post","status-publish","format-standard","hentry","category-solved","tag-objective-c"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] What&#039;s the difference in these three variable definition? - JassWeb<\/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:\/\/jassweb.com\/solved\/solved-whats-the-difference-in-these-three-variable-definition\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] What&#039;s the difference in these three variable definition? - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] Of your three examples, _foo1 and _foo3 are both instance variables (ivars) and are functionally equivalent (though there are some old compilers that that didn&#8217;t permit ivars in the @implementation). I&#8217;ve seen people argue passionately for the @implementation pattern, your _foo3 example. See the somewhat dated Where to put iVars in &#8220;modern&#8221; Objective-C? But ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-in-these-three-variable-definition\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-03T13:30:02+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-in-these-three-variable-definition\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-in-these-three-variable-definition\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] What&#8217;s the difference in these three variable definition?\",\"datePublished\":\"2022-10-03T13:30:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-in-these-three-variable-definition\/\"},\"wordCount\":267,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"objective-c\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-in-these-three-variable-definition\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-in-these-three-variable-definition\/\",\"name\":\"[Solved] What's the difference in these three variable definition? - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-10-03T13:30:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-in-these-three-variable-definition\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-in-these-three-variable-definition\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-in-these-three-variable-definition\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] What&#8217;s the difference in these three variable definition?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] What's the difference in these three variable definition? - JassWeb","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:\/\/jassweb.com\/solved\/solved-whats-the-difference-in-these-three-variable-definition\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] What's the difference in these three variable definition? - JassWeb","og_description":"[ad_1] Of your three examples, _foo1 and _foo3 are both instance variables (ivars) and are functionally equivalent (though there are some old compilers that that didn&#8217;t permit ivars in the @implementation). I&#8217;ve seen people argue passionately for the @implementation pattern, your _foo3 example. See the somewhat dated Where to put iVars in &#8220;modern&#8221; Objective-C? But ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-in-these-three-variable-definition\/","og_site_name":"JassWeb","article_published_time":"2022-10-03T13:30:02+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-in-these-three-variable-definition\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-in-these-three-variable-definition\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] What&#8217;s the difference in these three variable definition?","datePublished":"2022-10-03T13:30:02+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-in-these-three-variable-definition\/"},"wordCount":267,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["objective-c"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-in-these-three-variable-definition\/","url":"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-in-these-three-variable-definition\/","name":"[Solved] What's the difference in these three variable definition? - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-10-03T13:30:02+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-in-these-three-variable-definition\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-whats-the-difference-in-these-three-variable-definition\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-whats-the-difference-in-these-three-variable-definition\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] What&#8217;s the difference in these three variable definition?"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/13332","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=13332"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/13332\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=13332"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=13332"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=13332"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}