Hej!
Jag har länge gått och funderat på en app som jag behöver och som jag är sugen på att bygga som ett "lär dig Objective-C projekt". Jag har programmerat sedan barnsben och har, enligt mig själv, rätt bra koll på flertalet programmeringsspråk. Däremot är det såklart alltid lite knöligt att sätta sig in i ett nytt språk och nya API:n som man inte jobbat med förut.
Det jag behöver göra är att köra ett shellkommando och fånga output från det, som sedan parse:as och visas i appen. Kommandot kommer att skriva ut data kontinuerligt, och jag vill alltså fånga upp denna stream och läsa av den med jämna intervaller.
Jag har googlat runt lite, och från vad jag kan klura ut själv verkar det vara en vettig idé att skapa en NSPipe som hookar på sin NSTask med något i stil med [mytask setStandardOutput:mypipe], och sedan plockar ut "availableData" från pipen i jämna intervaller. Frågan är, är det det bästa sättet? Kommandot kommer att generera en sida text i jämna intervaller (t ex var 5:e sekund), och det känns som att man helst vill vänta på en uppdatering, läsa all data och sedan göra en parse. Ifall man bara kör läsningen på en timer kan det hända att man försöker läsa mitt under en uppdatering och då inte får ut all data. Kan man på något sätt styra detta bättre? Jag kan själv ställa output från det som körs, så man kan t ex avsluta varje sida med en viss teckenkombination el dyl. Då kanske det går att läsa kontinuerligt och söka i output efter den strängen, och i sådana fall trigga en parse då?
Dessutom, hur fungerar pipen i objective c, kan man ha en pipe som kontinuerligt läser från output och frigör använt minne allt eftersom? Eller kommer pipen att ta upp mer och mer minne ju lägre NSTask:en körs? Finns det kanske något bättre sätt att åstadkomma detta på än att skapa en NSTask?
Jag är inte speciellt hemma hantering av filer, pipes o dyl, så jag gissar mest här.. Men innan jag bygger en "ostabil" lösning tänkte jag att det kanske är bäst att göra med lite mer invanda programmerare vad som är den bästa approachen Alla förslag och tips uppskattas.