{"id":1442,"date":"2011-08-30T12:31:34","date_gmt":"2011-08-30T10:31:34","guid":{"rendered":"http:\/\/www.iprog.it\/blog\/?p=1442"},"modified":"2012-04-30T18:58:49","modified_gmt":"2012-04-30T17:58:49","slug":"programmazione-ios-e-mac-programmazione-oopfile-h-e-m","status":"publish","type":"post","link":"https:\/\/www.iprog.it\/blog\/objective-c-teoria\/programmazione-ios-e-mac-programmazione-oopfile-h-e-m\/","title":{"rendered":"Programmazione iOS e Mac, Programmazione OOP(File .h e .m)"},"content":{"rendered":"<p><span style=\"color: #ff0000;\">File di interfaccia .h<\/span><\/p>\n<p>Un file d\u2019interfaccia dichiara una classe e attraverso la sua superclasse, implicitamente tutte le dichiarazioni delle classi ereditate fino a NSObject*.<\/p>\n<div>\n<p>Il file d\u2019interfaccia (.h) dev\u2019essere importato in ogni modulo che ne fa uso attraverso la direttiva #import<\/p>\n<p>La direttiva \u00e8 identica alla #include del C, a meno del fatto che garantisce automaticamente l\u2019unicit\u00e0 dell\u2019inclusione del file.<\/p>\n<p>*NSObject = \u00e8 la classe principale in Cocoa. Tutti gli oggetti derivano da NSObject<\/p>\n<p>Se la superclasse fa riferimento ad una classe non appartenente alla gerarchia, occorre importarla esplicitamente oppure dichiararla mediante la direttiva @Class<\/p>\n<p>@Class miaClsasse;<\/p>\n<p>Non importa dove sia il file interfaccia. La direttiva informa semplicemente il compilatore che MiaClasse \u00e8 un nome di classe.<\/p>\n<p>Il file d&#8217;interfaccia comunica:<\/p>\n<p>In che modo la classe \u00e8 connessa all&#8217;interno della gerarchia;<\/p>\n<p>quali variabili d&#8217;istanza contiene;<\/p>\n<p>quali variabili eredita;<\/p>\n<p>quali sono i metodi \u00a0che possono essere inviate alle sue istanze;<\/p>\n<p><span style=\"color: #ff0000;\">File di implementazione .m<\/span><\/p>\n<p>Il\u00a0file implementazione (.m) racchiude la specifica (implementazione) di tutti i metodi dichiarati nel file di interfaccia.<\/p>\n<p>file implementazione (.m) racchiude la specifica (implementazione) di tutti i metodi dichiarati nel file di interfaccia.<\/p>\n<p>I metodi di una classe sono molto simili alle funzioni in C, col codice racchiuso tra due parentesi graffe \u00a0.<\/p>\n<p>Es<\/p>\n<p>+metodo{<\/p>\n<p>&#8230;&#8230;.<\/p>\n<p>}<\/p>\n<p>Un metodo d\u2019istanza pu\u00f2 accedere alle variabili d\u2019istanza semplicemente attraverso il loro nome .<\/p>\n<p>Quando una variabile d\u2019istanza appartiene ad un oggetto che non \u00e8 il ricevitore del messaggio, occorre specificarne il tipo attraverso l\u2019operatore \u2018-&gt;\u2019<\/p>\n<p>Esempio<\/p>\n<p>[code lang=&#8221;objc&#8221;]<br \/>\n&amp;lt;div&amp;gt;<br \/>\n&amp;lt;div&amp;gt;<br \/>\n&amp;lt;div&amp;gt;<br \/>\n&amp;lt;div&amp;gt;<br \/>\n&amp;lt;pre&amp;gt;@interface ClassA : NSObject<br \/>\n{&amp;lt;\/pre&amp;gt;<br \/>\nClassA *twin;<br \/>\n int instVar;<br \/>\n struct features *feature;<br \/>\n&amp;lt;pre&amp;gt;}<br \/>\n&#8230;<br \/>\n&#8211; makeTwin<br \/>\n{&amp;lt;\/pre&amp;gt;<br \/>\n&amp;lt;\/div&amp;gt;<br \/>\n&amp;lt;\/div&amp;gt;<br \/>\n&amp;lt;\/div&amp;gt;<br \/>\n&amp;lt;div&amp;gt;<br \/>\n&amp;lt;div&amp;gt;<\/p>\n<p>if( !twin ) {<\/p>\n<p>twin = [[ClassA alloc] init]; twin-&amp;gt;instVar = instVar; twin-&amp;gt;feature = feature;<\/p>\n<p>}<br \/>\n return twin;<\/p>\n<p>&amp;lt;\/div&amp;gt;<br \/>\n&amp;lt;\/div&amp;gt;<br \/>\n&amp;lt;div&amp;gt;<br \/>\n&amp;lt;div&amp;gt;<br \/>\n&amp;lt;div&amp;gt;<\/p>\n<p>{<\/p>\n<p>&amp;lt;\/div&amp;gt;<br \/>\n&amp;lt;\/div&amp;gt;<br \/>\n&amp;lt;\/div&amp;gt;<br \/>\n&amp;lt;\/div&amp;gt;<br \/>\n[\/code]<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>File di interfaccia .h Un file d\u2019interfaccia dichiara una classe e attraverso la sua superclasse, implicitamente tutte le dichiarazioni delle classi ereditate fino a NSObject*. Il file d\u2019interfaccia (.h) dev\u2019essere importato in ogni modulo che ne fa uso attraverso la direttiva #import La direttiva \u00e8 identica alla #include del C,&#8230; <a href=\"https:\/\/www.iprog.it\/blog\/objective-c-teoria\/programmazione-ios-e-mac-programmazione-oopfile-h-e-m\/\">Read more &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[1568,1386,52,104,1566,106,1385,28,46,50,1567,103,1384,1387,105],"class_list":["post-1442","post","type-post","status-publish","format-standard","hentry","category-objective-c-teoria","tag-h","tag-h-un-file","tag-classe","tag-dichiara","tag-direttiva","tag-file","tag-interfaccia","tag-ios","tag-istanza","tag-metodi","tag-nsobject","tag-parentesi","tag-programmazione-oop","tag-superclasse","tag-variabili"],"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, Programmazione OOP(File .h e .m) - 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-programmazione-oopfile-h-e-m\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Programmazione iOS e Mac, Programmazione OOP(File .h e .m) - iProg\" \/>\n<meta name=\"twitter:description\" content=\"File di interfaccia .h Un file d\u2019interfaccia dichiara una classe e attraverso la sua superclasse, implicitamente tutte le dichiarazioni delle classi ereditate fino a NSObject*. Il file d\u2019interfaccia (.h) dev\u2019essere importato in ogni modulo che ne fa uso attraverso la direttiva #import La direttiva \u00e8 identica alla #include del C,... Read more &raquo;\" \/>\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-programmazione-oopfile-h-e-m\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-teoria\\\/programmazione-ios-e-mac-programmazione-oopfile-h-e-m\\\/\"},\"author\":{\"name\":\"Diego\",\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/#\\\/schema\\\/person\\\/048c8acb70f8a33f1498675ab9db41a3\"},\"headline\":\"Programmazione iOS e Mac, Programmazione OOP(File .h e .m)\",\"datePublished\":\"2011-08-30T10:31:34+00:00\",\"dateModified\":\"2012-04-30T17:58:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-teoria\\\/programmazione-ios-e-mac-programmazione-oopfile-h-e-m\\\/\"},\"wordCount\":405,\"commentCount\":0,\"keywords\":[\".h\",\".h Un file\",\"classe\",\"dichiara\",\"direttiva\",\"File\",\"interfaccia\",\"ios\",\"istanza\",\"metodi\",\"NSObject\",\"parentesi\",\"Programmazione OOP\",\"superclasse\",\"variabili\"],\"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-programmazione-oopfile-h-e-m\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-teoria\\\/programmazione-ios-e-mac-programmazione-oopfile-h-e-m\\\/\",\"url\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-teoria\\\/programmazione-ios-e-mac-programmazione-oopfile-h-e-m\\\/\",\"name\":\"Programmazione iOS e Mac, Programmazione OOP(File .h e .m) - iProg\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/#website\"},\"datePublished\":\"2011-08-30T10:31:34+00:00\",\"dateModified\":\"2012-04-30T17:58:49+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-programmazione-oopfile-h-e-m\\\/\"]}]},{\"@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, Programmazione OOP(File .h e .m) - 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-programmazione-oopfile-h-e-m\/","twitter_card":"summary_large_image","twitter_title":"Programmazione iOS e Mac, Programmazione OOP(File .h e .m) - iProg","twitter_description":"File di interfaccia .h Un file d\u2019interfaccia dichiara una classe e attraverso la sua superclasse, implicitamente tutte le dichiarazioni delle classi ereditate fino a NSObject*. Il file d\u2019interfaccia (.h) dev\u2019essere importato in ogni modulo che ne fa uso attraverso la direttiva #import La direttiva \u00e8 identica alla #include del C,... Read more &raquo;","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-programmazione-oopfile-h-e-m\/#article","isPartOf":{"@id":"https:\/\/www.iprog.it\/blog\/objective-c-teoria\/programmazione-ios-e-mac-programmazione-oopfile-h-e-m\/"},"author":{"name":"Diego","@id":"https:\/\/www.iprog.it\/blog\/#\/schema\/person\/048c8acb70f8a33f1498675ab9db41a3"},"headline":"Programmazione iOS e Mac, Programmazione OOP(File .h e .m)","datePublished":"2011-08-30T10:31:34+00:00","dateModified":"2012-04-30T17:58:49+00:00","mainEntityOfPage":{"@id":"https:\/\/www.iprog.it\/blog\/objective-c-teoria\/programmazione-ios-e-mac-programmazione-oopfile-h-e-m\/"},"wordCount":405,"commentCount":0,"keywords":[".h",".h Un file","classe","dichiara","direttiva","File","interfaccia","ios","istanza","metodi","NSObject","parentesi","Programmazione OOP","superclasse","variabili"],"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-programmazione-oopfile-h-e-m\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.iprog.it\/blog\/objective-c-teoria\/programmazione-ios-e-mac-programmazione-oopfile-h-e-m\/","url":"https:\/\/www.iprog.it\/blog\/objective-c-teoria\/programmazione-ios-e-mac-programmazione-oopfile-h-e-m\/","name":"Programmazione iOS e Mac, Programmazione OOP(File .h e .m) - iProg","isPartOf":{"@id":"https:\/\/www.iprog.it\/blog\/#website"},"datePublished":"2011-08-30T10:31:34+00:00","dateModified":"2012-04-30T17:58:49+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-programmazione-oopfile-h-e-m\/"]}]},{"@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":2116,"_links":{"self":[{"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/posts\/1442","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=1442"}],"version-history":[{"count":0,"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/posts\/1442\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/media?parent=1442"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/categories?post=1442"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/tags?post=1442"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}