PHP -> Objective C (reageerders verdienen geld...;))

PHP -> Objective C (reageerders verdienen geld...;)) discussie in Ontwikkelen voor iOS forum; ( verdwijnt na registratie ) Zoals ik in dit topic al vertelde ben ik hard bezig om het kwartje te laten vallen. Ik heb zelf een hoog PHP niveau, maar ...



Ga terug   iPhone, iPod touch, iPad en Apple TV forum > Development > Ontwikkelen voor iOS
Wachtwoord vergeten? Registreren!
Registreer FAQ Ledenlijst Kalender Zoeken Berichten van vandaag Markeer forums als gelezen

Reageren

 

Discussietools Weergave
  #1  
Oud 21 March 2009, 19:16
» iPhone 3G 16GB (Zwart) [FW: 5.0]  [Jailbreak: Nee]
» Ik heb geen iPad  
» Mac OS X
 
Geregistreerd: 2 September 2008
Locatie: Baarn
Berichten: 11
Stuur een bericht via Skype™ naar MichMich
Standaard PHP -> Objective C (reageerders verdienen geld...;))

Zoals ik in dit topic al vertelde ben ik hard bezig om het kwartje te laten vallen.

Ik heb zelf een hoog PHP niveau, maar Objective C is toch even andere koek.

Toch had ik net even een "Ohhhh, dat betekent het!" momentje toen ik me realiseerde dat:

Objective C:
Code:
[myObj doSomething];
op hetzelfde neerkomt als:

PHP:
Code:
$myObj->doSomething();
Een dergelijk eureka moment helpt mij (en anderen?) behoorlijk bij het begrijpen van Objective C.

Wie kan er nog meer van dit soort voorbeelden noemen?

Verdien geld met je hulp:
Om de echte diehard programmeurs hier te motiveren hier hun input te leveren, beloof ik bij deze plechtig hun app aan te schaffen wanneer ze in dit topic ook ff hun appStore App noemen... (mits deze app uiteraard geen exorbitante prijs heeft... )

Laatst gewijzigd door MichMich; 21 March 2009 om 19:16. Reden: typo
Advertentie
Advertentie Gesponsorde links (verdwijnt na registratie)

  #2  
Oud 22 March 2009, 02:44
Malork's schermafbeelding
» iPhone 4S 32GB (Wit) [FW: 5.1.1]  [Jailbreak: Nee]
» iPad 3 Wi-Fi + 4G 16GB (Zwart) [FW: 5.1.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 1 June 2008
Locatie: Landgraaf
Berichten: 178
Stuur een bericht via MSN naar Malork
Standaard

haha nou ik kom ook van PHP af (hoog nivo ook) maar Objective-C is wel ff andere koek.

Ik ben eigenlijk PHP dit keer ECHT gaan zien als een ongelooflijk luie taal. String declareren? nah! Int/float? Nah, gewoon erinzetten! PHP vogelt het zich wel uit.

Ik ben zelf handmatig het volgende aan het 'omzetten':

$mijnClass = new deClass;
$deVar = $mijnClass->getWaarde();

lijkt simpel, is het ook. zelfs in Obj-C lukt het me om een zelfstandige losstaand class-file te includen (bijvoorbeeld een aparte .h en .m-file met een class met wat methodes) en die include ik weer in bijvoorbeeld een viewController.m, instantieer hem zoals hierboven,maar ergens doe ik iets fout.... de debugger toont dat de waarde die ik in een methode zet (of een NSLog()) wordt niet getoond, terwijl ik de methodes na instantiering (is dat een woord?) wel kan aanroepen (krijg in ieder geval geen debug-error en alles gaat door).

Ergens zie ik iets over het hoofd, maar ook daar kom ik wel uit.

EDIT: gevonden... hoe dom kun je zijn om malorkClass *malork = [MalorkClass init] te doen ipv malorkClass *malork = [[malorkClass alloc] init]; memorymanagement!! Ik haat PHP op dit vlak... die maakt het te makkelijk...

Ik snap je punt though; ik dacht 'ik spring wel even in' maar dat was toch lastiger. Waar ik vooral moeite mee heb is om de luie PHP-manier af te leren en ik denk dat ik ook teveel tegelijk wil proberen, of denk dat het anders werkt dan het feitelijk doet.

Laatst gewijzigd door Malork; 22 March 2009 om 03:07.
  #3  
Oud 22 March 2009, 11:18
» iPhone 3G 16GB (Zwart) [FW: 5.0]  [Jailbreak: Nee]
» Ik heb geen iPad  
» Mac OS X
 
Geregistreerd: 2 September 2008
Locatie: Baarn
Berichten: 11
Stuur een bericht via Skype™ naar MichMich
Red face

Exact, het is echt heel anders denken. Maar toch is een OOP PHP basis best handig. Je snapt wat classes zijn en dat je een object 'iets kunt laten doen'.

Inmiddels is het kwartje wat betreft de classes (controllers) wel redelijk aan het vallen (maar hij heeft de grond nog niet geraakt ), ik snap alleen nog niet helemaal waar ik op een heldere manier de XIB files moet plaatsen. (Ik begrijp waar ze voor zijn maar heb nog een beetje het gevoel van 'ohw, jah, die xib file hoort geloof ik hierbij ....');

Anyway, ondanks dat ik snap dat er niet een PHP-Objective C 'vertaalwoordenboek' te maken is, denk ik dat er nog wel een paar voorbeelden genoem kunnen worden wat het iets duidelijker te maken.

Bijvoorbeeld:

PHP:
Code:
class MYCLASS {
  function bla() {
    ...
  }
  ...
}
komt volgens mij wel redelijk op het zelfde neer als...
Objective C:
Code:
@implementation MYCLASS {
  - (void) bla {
    ...
  }
  ...
}

Of sla ik de plank nu helemaal mis?
  #4  
Oud 22 March 2009, 11:28
Malork's schermafbeelding
» iPhone 4S 32GB (Wit) [FW: 5.1.1]  [Jailbreak: Nee]
» iPad 3 Wi-Fi + 4G 16GB (Zwart) [FW: 5.1.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 1 June 2008
Locatie: Landgraaf
Berichten: 178
Stuur een bericht via MSN naar Malork
Standaard

nee, klopt helemaal. in je header-file doe je, net zoals in PHP netjes verklaren welke instance variabelen je gaat gebruiken, de methodes die je gebruikt en welke waardes ze teruggeven. (de interface dus, zoals al beschreven). OOP-kennis is zeker aan te raden hoewel het in Obj.C voor mij af en toe net lijkt alsof het iets nieuws is.

Ja die nib-files zijn een verhaal apart; die worden geinstantieerd wanneer je class geladen wordt, meestal een viewcontroller dus. die wordt (meestal) geladen vanuit je delegate. Je kan ook handmatig een nib-file (nib-files is de oude benaming voor xib-files maar men refereert altijd naar 'nib') laden, dat gaat dan meer in de trant van:

Citaat:
rootPilotVC = [[RootPilotViewController alloc] init];
rootSkillsVC = [[SkillTabVC alloc] initWithNibName:@"SkillTabView" bundle:nil];
Je nib-file bevat dus een viewcontroller die als class 'RootPilotViewController' heet. alle elementen in je xib-file worden dan ook geinstantieerd op het moment dat deze geladen wordt.

werken met views is ook een verhaal apart; ik moet zeggen ik ben er nu redelijk goed mee, maar 100% uit het hoofd lukt me nog niet, hoewel ik wel weet waar ik het moet zoeken wanneer het niet werkt ('Oh ja, moet hem wel even als subview aan mijn view toevoegen!').
  #5  
Oud 22 March 2009, 12:24
» iPhone 3G 16GB (Zwart) [FW: 5.0]  [Jailbreak: Nee]
» Ik heb geen iPad  
» Mac OS X
 
Geregistreerd: 2 September 2008
Locatie: Baarn
Berichten: 11
Stuur een bericht via Skype™ naar MichMich
Standaard

Precies! Dat heb ik hetzelfde... Helemaal uit mijn blote hoofd lukt het nog niet, maar fouten zijn wel zo opgespoord. Met andere woorden: De syntax is me nog niet helemaal eigen, maar de structuur wordt steeds duidelijker.

Ik moet zeggen dat je uitleg wel weer een extra verduidelijking biedt. Je bent duidelijk al een stapje verder. Misschien kan je daardoor ook in 'normaal nederlands' uitleggen wat een delegate nou precies doet. Ik heb wel een idee, maar zoek eigenlijk bevestiging...

Bedankt voor je reacties zover!
  #6  
Oud 22 March 2009, 18:31
Malork's schermafbeelding
» iPhone 4S 32GB (Wit) [FW: 5.1.1]  [Jailbreak: Nee]
» iPad 3 Wi-Fi + 4G 16GB (Zwart) [FW: 5.1.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 1 June 2008
Locatie: Landgraaf
Berichten: 178
Stuur een bericht via MSN naar Malork
Standaard

Delegates zijn we inderdaad niet gewend in PHP, en ik moest er ook een tijdje over doen voor het kwartje valt, maar eigenlijk is het heel 'simpel'.

De meeste klasses in het framework hebben een aantal methodes; sommige van deze methodes worden automatisch aangeroepen wanneer een bepaalde actie uitgevoerd wordt. Deze delegate-methode kun je in je class overnemen waarna er je eigen acties aan toe kunt voegen.

Een voorbeeld: Stel, je wil de gebruiker een vraag stellen via een zogenaamde alert-sheet. dit doe je door middel van:

Citaat:
UIActionSheet* mijnSheet = [[UIActionSheet alloc] initWithTitle:@"zeker weten?"
delegate:self
cancelButtonTitle:@"Annuleren"
destructiveButtonTitle:@"All your base..."
otherButtonTitles:@"other button",@"other button 2",nil];
[mijnSheet showInView:self.view];
[mijnSheet release];
Je instantieert hier dus een UIActionSheet (dat is zo'n keuzescherm wat van onder naar boven uitgeklapt wordt). Je ziet hierin ook waar hij de delegate kan terugvinden. in dit geval 'self' want ik zet de delegate-methode in dezelfde class.

Wat is nu een delegate van deze UIAlertSheet? Nou, enkele delegate-methodes zijn:

Citaat:
- (void)willPresentActionSheetUIActionSheet *)actionSheet { // before animation and showing view
... code ...
}

- (void)actionSheetUIActionSheet *)actionSheet clickedButtonAtIndexNSInteger)buttonIndex {

/* cancel button? */
if(buttonIndex == [actionSheet cancelButtonIndex]) {
[testLabel1 setText:@"cancel!"];
active = TRUE;
}

/* OK! button */
if(buttonIndex == [actionSheet destructiveButtonIndex]) {
[testLabel1 setText:@"BOOM!!!"];
active = TRUE;

}
}
Deze methodes worden automatisch door het systeem aangeroepen wanneer:

A: de methode "willPresentActionSheet" wordt aangeroepen door het systeem VOORDAT het UIAlertScreen getoond wordt. Je kan dus, door deze methode in je eigen class te implementeren, acties uitvoeren alvorens het scherm tevoorschijn komt.

B: de methode "void)actionSheetUIActionSheet *)actionSheet clickedButtonAtIndexNSInteger)buttonIndex" wordt automatisch aangeroepen wanneer er een button is ingedrukt.

Deze methodes hoef je niet te implementeren maar het is natuurlijk wel aan te raden om ze te gebruiken.

Deze delegate-methodes vind je ook terug in XCode bij het frameworks ->UIKit.framework ->headers->UIAlert.h

Delegate-methodes kun je dus overnemen / implementeren in je eigen classes door ze te 'over-erven'. Standaard zal er gekeken worden of de delegate-methode(s) voor de desbetreffende actie in je class-file staan en dan worden ze uitgevoerd...

Hopelijk was het een beetje duidelijk...mocht het niet duidelijk zijn laat het me maar weten dan doe ik mijn best om het te verduidelijken. (zo, wat een zin haha!)
  #7  
Oud 23 March 2009, 10:26
» iPhone 3G 8GB [FW: 4.0]  [Jailbreak: Nee]
» Ik heb geen iPad  
» Mac OS X
 
Geregistreerd: 14 August 2008
Berichten: 77
Standaard

Belangrijk aan bovenstaande is dat je uiteraard ook in je eigen classes delegates kunt implementeren, om bepaalde zaken bijvoorbeeld event-driven uit te kunnen voeren in aparte threads.
  #8  
Oud 23 March 2009, 11:03
Malork's schermafbeelding
» iPhone 4S 32GB (Wit) [FW: 5.1.1]  [Jailbreak: Nee]
» iPad 3 Wi-Fi + 4G 16GB (Zwart) [FW: 5.1.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 1 June 2008
Locatie: Landgraaf
Berichten: 178
Stuur een bericht via MSN naar Malork
Standaard

Citaat:
Oorspronkelijk geplaatst door P-development Bekijk bericht
Belangrijk aan bovenstaande is dat je uiteraard ook in je eigen classes delegates kunt implementeren, om bepaalde zaken bijvoorbeeld event-driven uit te kunnen voeren in aparte threads.
psies; volgens mij moet je dan die 'self' wijzigen in het object van je class. heb het nog niet geprobeerd maar zou theoretisch zo moeten werken.
  #9  
Oud 23 March 2009, 17:25
» iPhone 3G 16GB (Zwart) [FW: 5.0]  [Jailbreak: Nee]
» Ik heb geen iPad  
» Mac OS X
 
Geregistreerd: 2 September 2008
Locatie: Baarn
Berichten: 11
Stuur een bericht via Skype™ naar MichMich
Standaard

Het kwartje is nog niet helemaal gevallen, maar ik duik er even wat verder in... Bedankt voor jullie input zover!
  #10  
Oud 23 March 2009, 19:21
jonathan's schermafbeelding
» iPhone 5s 32GB (Goud) [FW: 7.0.2]  [Jailbreak: Nee]
» iPad mini Wi-Fi +4G 32GB (Zwart) [FW: 7.0.2]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 18 September 2007
Berichten: 251
Standaard

Ik ga binnenkort hetzelfde traject volgen: ik ken al OOP en MVC in PHP (nou ja, OOP en MVC zijn universeel), en wil ook Objective-C leren. Hoe lang hebben jullie erover gedaan om het een beetje te snappen? Dat je bijvoorbeeld een "Hello World"-applicatie kan maken?
  #11  
Oud 23 March 2009, 21:29
ideveloper's schermafbeelding
» iPhone 4S 64GB (Zwart) [FW: 5.1]  [Jailbreak: Nee]
» iPad 3 Wi-Fi +4G 64GB (Zwart) [FW: 5.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 2 April 2008
Locatie: Bodegraven
Berichten: 339
Send a message via twitter to ideveloper
Standaard

Citaat:
Oorspronkelijk geplaatst door jonathan Bekijk bericht
Ik ga binnenkort hetzelfde traject volgen: ik ken al OOP en MVC in PHP (nou ja, OOP en MVC zijn universeel), en wil ook Objective-C leren. Hoe lang hebben jullie erover gedaan om het een beetje te snappen? Dat je bijvoorbeeld een "Hello World"-applicatie kan maken?
Als je er even voor gaat zitten gaat hello world binnen een avondje lukken.
  #12  
Oud 23 March 2009, 21:31
» iPhone 3G 16GB (Zwart) [FW: 5.0]  [Jailbreak: Nee]
» Ik heb geen iPad  
» Mac OS X
 
Geregistreerd: 2 September 2008
Locatie: Baarn
Berichten: 11
Stuur een bericht via Skype™ naar MichMich
Standaard

Maar om vanaf daar door te gaan is juist de uitdaging!
  #13  
Oud 24 March 2009, 17:30
Thaurin's schermafbeelding
» iPhone 3G 8GB [FW: 2.1]
» Windows
 
Geregistreerd: 4 September 2008
Berichten: 141
Standaard

Ik moet zeggen dat "Hello, world" in Cocoa Touch nog redelijk complex was voor mij. Je moet weten hoe NIB files laden, hoe de NIB files worden gechained, wat File's Owner is en hoe controller classes erin worden geschoven bij het laden, hoe je connecties legt tussen controller en view en waarom, plus de nodige Objective-C syntax. Een hoop zal wel werken zonder veel van deze kennis, maar dan snap je ook niet goed wat er nou precies gebeurt.
  #14  
Oud 24 March 2009, 20:09
Malork's schermafbeelding
» iPhone 4S 32GB (Wit) [FW: 5.1.1]  [Jailbreak: Nee]
» iPad 3 Wi-Fi + 4G 16GB (Zwart) [FW: 5.1.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 1 June 2008
Locatie: Landgraaf
Berichten: 178
Stuur een bericht via MSN naar Malork
Standaard

precies wat Thaurin zegt; een 'hello world' heb je al snel..maar er is geen bal aan als je niet weet wat je doet. In het begin vond ik veel van deze tutorials online met
"klik hier, tiep dat..sleep dat..." maar WAAROM werd er niet bijgezegd..zo leer je het dus niet.

Het is vooral veel spelen; aanpassen en kijken wat er gebeurt.. small babysteps at a time...
  #15  
Oud 27 April 2009, 15:40
» iPhone 4 32GB (Zwart) [FW: 4.2.1]  [Jailbreak: Ja]
» iPad 1 Wi-Fi 32GB [FW: 4.3.5]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 30 September 2007
Locatie: nabij Den Haag
Berichten: 191
Standaard Aanmelden als developper

Ik ben ook gevorderd in PHP, maar Objective-C is mij vooralsnog nog een raadsel.. Binnenkort maar eens een boek kopen!
  #16  
Oud 28 April 2009, 10:54
libia's schermafbeelding
» iPhone 3G 8GB [FW: 4.2.1]  [Jailbreak: Ja]
» iPad 1 Wi-Fi +3G 64GB [FW: 4.3.5]  [Jailbreak: Ja]
» Windows
 
Geregistreerd: 2 December 2008
Berichten: 451
Standaard

Ik kom ook van PHP ik heb echter geen mac, ik programmeer dus zonder xcode en zonder interfacebuilder. Ik programmeer dus ook zonder nib/xib files.

Objective-C zelf vind ik niet zo moeilijk, waar voor mij vooral het probleem ligt/lag is dat er nergens uitleg te vinden is waar ze geen gebruik maken van interfacebuilder!
Ondertussen heb ik mezelf aangeleerd om de headerfiles te doorzoeken naar antwoorden (methods die mogelijk doe wat ik wil). En bij apple geven ze over die headerfiles meestal ook nog een korte uitleg.

Laatst gewijzigd door libia; 28 April 2009 om 10:56. Reden: Netjes maken (op iphone)
  #17  
Oud 28 April 2009, 11:02
Thaurin's schermafbeelding
» iPhone 3G 8GB [FW: 2.1]
» Windows
 
Geregistreerd: 4 September 2008
Berichten: 141
Standaard

Header files doorlezen is zeker aan te raden, maar je kunt ook gewoon de class reference guides van Apple lezen. Daaruit krijg je meestal een aardig idee van hoe een class werkt. Verder kun je programmatisch alles doen wat IB ook kan en soms is het de enige mogelijkheid (als je tijdens run-time pas weet wat je toe wil voegen). Informatie over hoe dat moet zou dus gewoon te vinden moeten zijn.
  #18  
Oud 28 April 2009, 11:24
libia's schermafbeelding
» iPhone 3G 8GB [FW: 4.2.1]  [Jailbreak: Ja]
» iPad 1 Wi-Fi +3G 64GB [FW: 4.3.5]  [Jailbreak: Ja]
» Windows
 
Geregistreerd: 2 December 2008
Berichten: 451
Standaard

Citaat:
Oorspronkelijk geplaatst door Thaurin Bekijk bericht
Header files doorlezen is zeker aan te raden, maar je kunt ook gewoon de class reference guides van Apple lezen. Daaruit krijg je meestal een aardig idee van hoe een class werkt. Verder kun je programmatisch alles doen wat IB ook kan en soms is het de enige mogelijkheid (als je tijdens run-time pas weet wat je toe wil voegen). Informatie over hoe dat moet zou dus gewoon te vinden moeten zijn.
Ja, class reference van apple die bedoelde ik idd!
Als jij veel tuts kan vinden die bijvoorbeeld uitleggen hoe je in code een UITable maakt, dan vind ik dat knap
  #19  
Oud 28 April 2009, 11:35
Thaurin's schermafbeelding
» iPhone 3G 8GB [FW: 2.1]
» Windows
 
Geregistreerd: 4 September 2008
Berichten: 141
Standaard

Hmmm, voordat de SDK werd gereleased was er natuurlijk al een levendige (unofficial) scene. Je moet die old-school gasten te pakken krijgen. Er is ook tenminste n boek uitgebracht over de open toolchain, genaamd iPhone Open Application Development van Jonathan A. Zdziarski. Probeer 't daar eens!
  #20  
Oud 30 April 2009, 13:33
libia's schermafbeelding
» iPhone 3G 8GB [FW: 4.2.1]  [Jailbreak: Ja]
» iPad 1 Wi-Fi +3G 64GB [FW: 4.3.5]  [Jailbreak: Ja]
» Windows
 
Geregistreerd: 2 December 2008
Berichten: 451
Standaard

Citaat:
Oorspronkelijk geplaatst door Thaurin Bekijk bericht
Hmmm, voordat de SDK werd gereleased was er natuurlijk al een levendige (unofficial) scene. Je moet die old-school gasten te pakken krijgen. Er is ook tenminste n boek uitgebracht over de open toolchain, genaamd iPhone Open Application Development van Jonathan A. Zdziarski. Probeer 't daar eens!
dat boek is volgens mij geschreven voor 1.* niet voor 2.* (ik had een keer een stukje code van een online versie van dat boek gebruikt, maar dat werkte niet )
en daarnaast houd ik niet zo van programmeer boeken
Reageren


Er zijn 1 actieve gebruikers die momenteel deze discussie bekijken (0 leden en 1 gasten)

 
Discussietools
Weergave

Soortgelijke discussies

Discussie Auteur Forum Reacties Laatste bericht
Geld verdienen met je iPhone Twister020 iPhone Apps 4 25 January 2010 16:58
Geld verdienen Gielk iPhone Apps 8 11 November 2008 20:48

Regels voor berichten
Je mag geen nieuwe discussies starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit
Trackbacks are Aan
Pingbacks are Aan
Refbacks are Uit



Alle tijden zijn GMT +2. Het is nu 14:39.