{"id":1567,"date":"2011-09-07T10:10:29","date_gmt":"2011-09-07T08:10:29","guid":{"rendered":"http:\/\/www.iprog.it\/blog\/?p=1567"},"modified":"2012-04-30T19:02:17","modified_gmt":"2012-04-30T18:02:17","slug":"programmazione-ios-e-mac-le-proprietaproperty","status":"publish","type":"post","link":"https:\/\/www.iprog.it\/blog\/objective-c-teoria\/programmazione-ios-e-mac-le-proprietaproperty\/","title":{"rendered":"Programmazione iOS e Mac (Le Propriet\u00e0)@property"},"content":{"rendered":"<p><a href=\"http:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2011\/08\/xcode_icon_slider.png\" rel=\"lightbox[1567]\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1308\" title=\"xcode_icon_slider\" src=\"http:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2011\/08\/xcode_icon_slider.png\" alt=\"\" width=\"200\" height=\"200\" srcset=\"https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2011\/08\/xcode_icon_slider.png 200w, https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2011\/08\/xcode_icon_slider-150x150.png 150w, https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2011\/08\/xcode_icon_slider-90x90.png 90w, https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2011\/08\/xcode_icon_slider-48x48.png 48w\" sizes=\"auto, (max-width: 200px) 100vw, 200px\" \/><\/a><\/p>\n<p>Le\u00a0propriet\u00e0 sollevano il programmatore dal compito di creare la coppia di metodi get\/set per poter accedere alle variabili di istanza. Grazie alle properties il compilatore \u00e8 in grado di generare automaticamente il codice per l\u2019accesso alle variabili di istanza al di fuori della classe.<\/p>\n<div>\n<p>La dichiarazione di una propriet\u00e0 fa uso della direttiva @property e pu\u00f2 comparire ovunque nella sezione dell\u2019interfaccia dedicata ai metodi.<br \/>\nLa direttiva @synthesize nella sezione relativa all\u2019implementazione ordina al compilatore di creare (sintetizzare) i metodi \u2018get\/set\u2019.<\/p>\n<p>La direttiva @dynamic informa il compilatore che tali metodi verranno aggiunti a run-time dall\u2019utente<\/p>\n<p>Esempio<\/p>\n<div>\n<p>\/\/&#8212;&#8211; file interfaccia &#8212;&#8211;<\/p>\n<p>@interface MiaClasse : NSObject {<\/p>\n<pre>  NSString *value;\r\n}<\/pre>\n<div>\n<div>\n<div>\n<div>\n<pre>@property(copy, readwrite)NSString *value;\r\n@end<\/pre>\n<div>\n<div>\n<div>\n<div>\n<p>\/\/&#8212;&#8211; file implementazione &#8212;&#8211;<\/p>\n<p>@implementation MyClass<\/p>\n<p>@synthesize value;<\/p>\n<p>@end<\/p>\n<p>Per accedere alla variabile istanza value si ricorre alla notazione punto \u2018.\u2019:<\/p>\n<div>\n<div>\n<div>\n<div>\n<p>MiaClasse *miaClasse = [[MiaClasse alloc] init];<\/p>\n<p>miaClasse.value = @\u201dNew Value\u201d;<\/p>\n<p>NSLog(@\u201dmiaClasse=%@\u201d, miaClasse);<\/p>\n<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;<\/p>\n<p>Si precisa che essendo impostata come default la direttiva @dynamic,qualora non si specifichi la modalit\u00e0 di creazione della propriet\u00e0 (@synthesize o @dynamic) occorre fornire una coppia get\/set o al minimo anche una delle due (tipicamente la get).<\/p>\n<div>\n<p>La dichiarazione della propriet\u00e0 prevede la specifica di alcuni attributi:<br \/>\nreadonly : La propriet\u00e0 \u00e8 in sola lettura. Se si tenta di modificarne il valore si ottiene un errore in compilazione. E\u2019 richiesta solo la \u2018get\u2019 oppure se specificata la @synthesize verr\u00e0 creata automaticamente solo la \u2018get\u2019<\/p>\n<p>readwrite : La propriet\u00e0 \u00e8 sia in lettura che in scrittura (default).<\/p>\n<p>sono richiesti entrambi i metodi \u2018get\/set\u2019 oppure se specificata<br \/>\nla @synthesize verranno creati automaticamente sia \u2018get\u2019 che \u2018set\u2019<br \/>\nassign : Assegnamento semplice (default)<\/p>\n<p>retain : Viene effettuata una retain dopo l\u2019assegnamento. Attributo valido solo per tipi Objective-C<\/p>\n<p>copy : Viene effettuato l\u2019assegnamento tramite una copia dell\u2019oggetto.<\/p>\n<\/div>\n<p>Se non si fa uso di Garbage Collection, occorre specificare uno dei tre parametri assign, retain o copy, altrimenti si ottiene un warning dal compilatore<\/p>\n<div>\n<p>Se si desidera accedere ad una propriet\u00e0 dell\u2019oggetto corrente occorre farlo attraverso self, altrimenti si<\/p>\n<p>accede alla variabile istanza direttamente:<\/p>\n<p>Esemio<\/p>\n<pre>self.altezza = 10.0; \/\/ Accedo tramite propriet\u00e0\r\naltezza = 10.0  \/\/ Accedo direttamente<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Le\u00a0propriet\u00e0 sollevano il programmatore dal compito di creare la coppia di metodi get\/set per poter accedere alle variabili di istanza. Grazie alle properties il compilatore \u00e8 in grado di generare automaticamente il codice per l\u2019accesso alle variabili di istanza al di fuori della classe. La dichiarazione di una propriet\u00e0 fa&#8230; <a href=\"https:\/\/www.iprog.it\/blog\/objective-c-teoria\/programmazione-ios-e-mac-le-proprietaproperty\/\">Read more &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":1308,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[70,67,1575,34,28,46,1365,50,1574,48,71],"class_list":["post-1567","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-objective-c-teoria","tag-accedere","tag-alloc","tag-compilatore","tag-dell","tag-ios","tag-istanza","tag-le-propriet","tag-metodi","tag-programmatore","tag-programmazione","tag-property"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Programmazione iOS e Mac (Le Propriet\u00e0)@property  - iProg<\/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:\/\/www.iprog.it\/blog\/objective-c-teoria\/programmazione-ios-e-mac-le-proprietaproperty\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Programmazione iOS e Mac (Le Propriet\u00e0)@property  - iProg\" \/>\n<meta name=\"twitter:description\" content=\"Le\u00a0propriet\u00e0 sollevano il programmatore dal compito di creare la coppia di metodi get\/set per poter accedere alle variabili di istanza. Grazie alle properties il compilatore \u00e8 in grado di generare automaticamente il codice per l\u2019accesso alle variabili di istanza al di fuori della classe. La dichiarazione di una propriet\u00e0 fa... Read more &raquo;\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2011\/08\/xcode_icon_slider.png\" \/>\n<meta name=\"twitter:creator\" content=\"@flexkid1\" \/>\n<meta name=\"twitter:site\" content=\"@iprogblog\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Diego\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-teoria\\\/programmazione-ios-e-mac-le-proprietaproperty\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-teoria\\\/programmazione-ios-e-mac-le-proprietaproperty\\\/\"},\"author\":{\"name\":\"Diego\",\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/#\\\/schema\\\/person\\\/048c8acb70f8a33f1498675ab9db41a3\"},\"headline\":\"Programmazione iOS e Mac (Le Propriet\u00e0)@property\",\"datePublished\":\"2011-09-07T08:10:29+00:00\",\"dateModified\":\"2012-04-30T18:02:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-teoria\\\/programmazione-ios-e-mac-le-proprietaproperty\\\/\"},\"wordCount\":335,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-teoria\\\/programmazione-ios-e-mac-le-proprietaproperty\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/wp-content\\\/uploads\\\/2011\\\/08\\\/xcode_icon_slider.png\",\"keywords\":[\"accedere\",\"alloc\",\"compilatore\",\"dell\",\"ios\",\"istanza\",\"Le propriet\",\"metodi\",\"programmatore\",\"programmazione\",\"property\"],\"articleSection\":[\"Objective-C Teoria\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-teoria\\\/programmazione-ios-e-mac-le-proprietaproperty\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-teoria\\\/programmazione-ios-e-mac-le-proprietaproperty\\\/\",\"url\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-teoria\\\/programmazione-ios-e-mac-le-proprietaproperty\\\/\",\"name\":\"Programmazione iOS e Mac (Le Propriet\u00e0)@property - iProg\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-teoria\\\/programmazione-ios-e-mac-le-proprietaproperty\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-teoria\\\/programmazione-ios-e-mac-le-proprietaproperty\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/wp-content\\\/uploads\\\/2011\\\/08\\\/xcode_icon_slider.png\",\"datePublished\":\"2011-09-07T08:10:29+00:00\",\"dateModified\":\"2012-04-30T18:02:17+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/#\\\/schema\\\/person\\\/048c8acb70f8a33f1498675ab9db41a3\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-teoria\\\/programmazione-ios-e-mac-le-proprietaproperty\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-teoria\\\/programmazione-ios-e-mac-le-proprietaproperty\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/wp-content\\\/uploads\\\/2011\\\/08\\\/xcode_icon_slider.png\",\"contentUrl\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/wp-content\\\/uploads\\\/2011\\\/08\\\/xcode_icon_slider.png\",\"width\":\"200\",\"height\":\"200\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/\",\"name\":\"iProg\",\"description\":\"perch\u00e9 reinventare la ruota?\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/#\\\/schema\\\/person\\\/048c8acb70f8a33f1498675ab9db41a3\",\"name\":\"Diego\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bf8084effa4627f8e50af0d50d06b0677e4a9de5e895e347c0590ad5696fdfc9?s=96&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bf8084effa4627f8e50af0d50d06b0677e4a9de5e895e347c0590ad5696fdfc9?s=96&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bf8084effa4627f8e50af0d50d06b0677e4a9de5e895e347c0590ad5696fdfc9?s=96&r=g\",\"caption\":\"Diego\"},\"description\":\"Google+\",\"sameAs\":[\"http:\\\/\\\/it.linkedin.com\\\/in\\\/diegocaridei\\\/\",\"https:\\\/\\\/x.com\\\/flexkid1\",\"http:\\\/\\\/www.youtube.com\\\/channel\\\/UCjQ2z1ygV9tv55QAc2q3JHA\"],\"url\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/author\\\/flexkid\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Programmazione iOS e Mac (Le Propriet\u00e0)@property  - iProg","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:\/\/www.iprog.it\/blog\/objective-c-teoria\/programmazione-ios-e-mac-le-proprietaproperty\/","twitter_card":"summary_large_image","twitter_title":"Programmazione iOS e Mac (Le Propriet\u00e0)@property  - iProg","twitter_description":"Le\u00a0propriet\u00e0 sollevano il programmatore dal compito di creare la coppia di metodi get\/set per poter accedere alle variabili di istanza. Grazie alle properties il compilatore \u00e8 in grado di generare automaticamente il codice per l\u2019accesso alle variabili di istanza al di fuori della classe. La dichiarazione di una propriet\u00e0 fa... Read more &raquo;","twitter_image":"https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2011\/08\/xcode_icon_slider.png","twitter_creator":"@flexkid1","twitter_site":"@iprogblog","twitter_misc":{"Scritto da":"Diego","Tempo di lettura stimato":"2 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.iprog.it\/blog\/objective-c-teoria\/programmazione-ios-e-mac-le-proprietaproperty\/#article","isPartOf":{"@id":"https:\/\/www.iprog.it\/blog\/objective-c-teoria\/programmazione-ios-e-mac-le-proprietaproperty\/"},"author":{"name":"Diego","@id":"https:\/\/www.iprog.it\/blog\/#\/schema\/person\/048c8acb70f8a33f1498675ab9db41a3"},"headline":"Programmazione iOS e Mac (Le Propriet\u00e0)@property","datePublished":"2011-09-07T08:10:29+00:00","dateModified":"2012-04-30T18:02:17+00:00","mainEntityOfPage":{"@id":"https:\/\/www.iprog.it\/blog\/objective-c-teoria\/programmazione-ios-e-mac-le-proprietaproperty\/"},"wordCount":335,"commentCount":0,"image":{"@id":"https:\/\/www.iprog.it\/blog\/objective-c-teoria\/programmazione-ios-e-mac-le-proprietaproperty\/#primaryimage"},"thumbnailUrl":"https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2011\/08\/xcode_icon_slider.png","keywords":["accedere","alloc","compilatore","dell","ios","istanza","Le propriet","metodi","programmatore","programmazione","property"],"articleSection":["Objective-C Teoria"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.iprog.it\/blog\/objective-c-teoria\/programmazione-ios-e-mac-le-proprietaproperty\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.iprog.it\/blog\/objective-c-teoria\/programmazione-ios-e-mac-le-proprietaproperty\/","url":"https:\/\/www.iprog.it\/blog\/objective-c-teoria\/programmazione-ios-e-mac-le-proprietaproperty\/","name":"Programmazione iOS e Mac (Le Propriet\u00e0)@property - iProg","isPartOf":{"@id":"https:\/\/www.iprog.it\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.iprog.it\/blog\/objective-c-teoria\/programmazione-ios-e-mac-le-proprietaproperty\/#primaryimage"},"image":{"@id":"https:\/\/www.iprog.it\/blog\/objective-c-teoria\/programmazione-ios-e-mac-le-proprietaproperty\/#primaryimage"},"thumbnailUrl":"https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2011\/08\/xcode_icon_slider.png","datePublished":"2011-09-07T08:10:29+00:00","dateModified":"2012-04-30T18:02:17+00:00","author":{"@id":"https:\/\/www.iprog.it\/blog\/#\/schema\/person\/048c8acb70f8a33f1498675ab9db41a3"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.iprog.it\/blog\/objective-c-teoria\/programmazione-ios-e-mac-le-proprietaproperty\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.iprog.it\/blog\/objective-c-teoria\/programmazione-ios-e-mac-le-proprietaproperty\/#primaryimage","url":"https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2011\/08\/xcode_icon_slider.png","contentUrl":"https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2011\/08\/xcode_icon_slider.png","width":"200","height":"200"},{"@type":"WebSite","@id":"https:\/\/www.iprog.it\/blog\/#website","url":"https:\/\/www.iprog.it\/blog\/","name":"iProg","description":"perch\u00e9 reinventare la ruota?","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.iprog.it\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/www.iprog.it\/blog\/#\/schema\/person\/048c8acb70f8a33f1498675ab9db41a3","name":"Diego","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/bf8084effa4627f8e50af0d50d06b0677e4a9de5e895e347c0590ad5696fdfc9?s=96&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/bf8084effa4627f8e50af0d50d06b0677e4a9de5e895e347c0590ad5696fdfc9?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bf8084effa4627f8e50af0d50d06b0677e4a9de5e895e347c0590ad5696fdfc9?s=96&r=g","caption":"Diego"},"description":"Google+","sameAs":["http:\/\/it.linkedin.com\/in\/diegocaridei\/","https:\/\/x.com\/flexkid1","http:\/\/www.youtube.com\/channel\/UCjQ2z1ygV9tv55QAc2q3JHA"],"url":"https:\/\/www.iprog.it\/blog\/author\/flexkid\/"}]}},"views":2367,"_links":{"self":[{"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/posts\/1567","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/comments?post=1567"}],"version-history":[{"count":0,"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/posts\/1567\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/media\/1308"}],"wp:attachment":[{"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/media?parent=1567"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/categories?post=1567"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/tags?post=1567"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}