Odpowiedz na ten temat
Pokaż wyniki od 1 do 10 z 10
  1. Avatar DeeCann
    Dołączył
    Oct 2009
    SkÄ…d
    WPR
    Postów
    38

    Cytuj | #1

    Witam

    Mam taki teoretyczny dylemat który mi do głowy przyszedł podczas pisania. Dopiero raczkuje w tym temacie, a poniższe dywagacje biorę z pamięci także może jakiś byk się trafić.
    Załóżmy taki kod pisany na iPhona, bo w przypadku OS X zwalnianie pamięci nie jest konieczne ze względu na garbage collector

    NSURL *url = [[NSURL alloc] initWithString:@"http://myapple.pl"]
    [url release]
    Jest ok ... działa.

    Spróbujmy tak:
    NSString *string = [[NSString alloc] initWithString:@"http://myapple.pl"]
    NSURL *url = [[NSURL alloc] initWithString:string ]
    [url release]
    [string release]
    Jest ok ... działa.

    Ale można tez i tak:
    NSURL *url = [[NSURL alloc] initWithString:[[NSString alloc] initWithString:@"http://myapple.pl"]]
    [url release]
    Jest ok .... ale w parametrze daliśmy utworzony obiekt NSString który także powinniśmy jakoś zwolnić, ale nie mamy do niego wskaźnika.

    Jak w tym 3 przypadku wygląda zwalnianie pamięci ? Jeśli coś pokręciłem to proszę o koleżeńskie, delikatne sprostowanie

    pozdrawiam
    Komputer: Mac 27"::C2D::3,06GHz::TrackPad


  2. Avatar dusker
    Dołączył
    Jan 2007
    SkÄ…d
    wwa
    Postów
    382

    Cytuj | #2

    Ale można tez i tak:
    NSURL *url = [[NSURL alloc] initWithString:[[NSString alloc] initWithString:@"http://myapple.pl"]]
    [url release]
    Jest ok .... ale w parametrze daliśmy utworzony obiekt NSString który także powinniśmy jakoś zwolnić, ale nie mamy do niego wskaźnika.
    Można ale wtedy to sie nazywa memory leak jesli chcialbys podac string odrazu w parametrze to nie allocuj go:
    Kod:
    NSURL *url = [[NSURL alloc] initWithString:@"http://google.com"];
    bądź alternatywnie:
    Kod:
    NSURL *url = [[NSURL alloc] initWithString:[NSString stringWithString:@"http://www.google.pl"]];
    pozdrawiam
    pt
    Komputer: Macbook Pro, Macbook Air
    Telefon: iPhone 3g
    Odtwarzacz: iPod Touch 1g/2g

  3. Avatar DeeCann
    Dołączył
    Oct 2009
    SkÄ…d
    WPR
    Postów
    38

    Cytuj | #3

    Cytat Napisał dusker Zobacz post
    bądź alternatywnie:
    Kod:
    NSURL *url = [[NSURL alloc] initWithString:[NSString stringWithString:@"http://www.google.pl"]];
    pozdrawiam
    pt
    O .. i widzisz. Na to nie wpadłem żeby dawać mu parametr NSString jako obiekt bez alokacji.
    A co do memory leak to moje podejrzenie było trafne, że coś tu nie gra
    A problem wziął się stad, że wiele metod potrzebuje w parametrze NSString i za każdym razem trzeba by było tworzyć obiekt, wydawało mi się to dość kuriozalne i stąd to pytanie ... ale wątpliwości rozwiane Wielkie dzięki.

    Druga sprawa jaka mnie nurtuje ale to już czysta teoria Objective-C ... skąd wziął się pomysł aby string nie był typem tylko obiektem. Takie to trochę ... niespotykane?
    Jedyna rzecz jaka do głowy mi przychodzi to lepsze zarządzanie pamięcią w przypadku długich stringów, ale nie wiem czy to jakiś argument.

    pozdrawiam
    Komputer: Mac 27"::C2D::3,06GHz::TrackPad

  4. Avatar dusker
    Dołączył
    Jan 2007
    SkÄ…d
    wwa
    Postów
    382

    Cytuj | #4

    Cytat Napisał DeeCann Zobacz post
    Druga sprawa jaka mnie nurtuje ale to już czysta teoria Objective-C ... skąd wziął się pomysł aby string nie był typem tylko obiektem. Takie to trochę ... niespotykane?
    Jedyna rzecz jaka do głowy mi przychodzi to lepsze zarządzanie pamięcią w przypadku długich stringów, ale nie wiem czy to jakiś argument.

    pozdrawiam
    Odsyłam do dokumentacji NSString Class Reference aby zgłębić funkcjonalność obiektu nsstring
    BTW to nie ma być niemiłe, ale poczytaj trochę o programowaniu obiektowym, bo odnoszę wrażenie, że nie dokońca rozumiesz.
    Ostatnio edytowane przez dusker ; 05.05.2010 o 09:46
    Komputer: Macbook Pro, Macbook Air
    Telefon: iPhone 3g
    Odtwarzacz: iPod Touch 1g/2g

  5. Avatar DeeCann
    Dołączył
    Oct 2009
    SkÄ…d
    WPR
    Postów
    38

    Cytuj | #5

    Cytat Napisał dusker Zobacz post
    BTW to nie ma być niemiłe, ale poczytaj trochę o programowaniu obiektowym, bo odnoszę wrażenie, że nie dokońca rozumiesz.
    OOP znam tyle o ile żeby się tym posługiwać ... czy dobrze/średnio/mało to już kwestia indywidualna.
    Pytanie moje wzięło się stąd, że chociażby C# posiada string jako BuiltIn Type.
    Ale tak jak pisałem to tylko dywagacja już nie na temat. RTFM !!!
    Komputer: Mac 27"::C2D::3,06GHz::TrackPad

  6. Avatar dusker
    Dołączył
    Jan 2007
    SkÄ…d
    wwa
    Postów
    382

    Cytuj | #6

    Pytanie moje wzięło się stąd, że chociażby C# posiada string jako BuiltIn Type
    W C# też jest klasa String i stringami zwykle operuje się za jej pomocą. Natomiast odpowiednikiem tego o czym mówisz w objc jest cstring.

    OOP znam tyle o ile żeby się tym posługiwać ... czy dobrze/średnio/mało to już kwestia indywidualna.
    Zle mnie odebrałeś, ja naprawde nie chciałem być niemiły, tylko zasugerować pogłębienie wiedzy bo pytałeś o rzecz dość prostą. BTW im lepiej coś się zna, tym lepiej się tym posługuje.

    pozdrawiam
    pt
    Komputer: Macbook Pro, Macbook Air
    Telefon: iPhone 3g
    Odtwarzacz: iPod Touch 1g/2g

  7. Avatar macieks72

    Dołączył
    Aug 2009
    Postów
    9,327

    Cytuj | #7

    To o co on pytał nie ma nic wspólnego z OOP, to rzecz specyficzna dla obj-c i cocoa.
    Komputer: Macbook Pro wykÄ…pany w pepsi, teraz Acer Aspire 5750G
    Telefon: iPhone 4 - iOS 5.1.1
    Ludzie, używajcie alta. No chyba że wam obojętne, czy robicie komuś 'łaskę', czy 'laske'.

  8. Avatar DeeCann
    Dołączył
    Oct 2009
    SkÄ…d
    WPR
    Postów
    38

    Cytuj | #8

    Cytat Napisał dusker Zobacz post
    Zle mnie odebrałeś, ja naprawde nie chciałem być niemiły, tylko zasugerować pogłębienie wiedzy bo pytałeś o rzecz dość prostą. BTW im lepiej coś się zna, tym lepiej się tym posługuje.
    pt
    Ja rozumiem ... napisałem tylko tyle że można znać OOP i według własnej oceny znać go na poziomie mega wypas, ale w rozrachunku ogólnym nie wiele się wie
    A pogłębiać wiedzę, człowiek pogłębia ją codziennie Dlatego też RTFM !!! - od tego to jest.

    Nie ma co ciągnąć tematu dalej .. było pytanie, padła konkretna odpowiedź

    pozdrawiam
    Komputer: Mac 27"::C2D::3,06GHz::TrackPad

  9. Avatar dusker
    Dołączył
    Jan 2007
    SkÄ…d
    wwa
    Postów
    382

    Cytuj | #9

    Cytat Napisał macieks72 Zobacz post
    To o co on pytał nie ma nic wspólnego z OOP, to rzecz specyficzna dla obj-c i cocoa.
    Drugie pytanie to stricte OOP.
    Komputer: Macbook Pro, Macbook Air
    Telefon: iPhone 3g
    Odtwarzacz: iPod Touch 1g/2g

  10. Avatar macieks72

    Dołączył
    Aug 2009
    Postów
    9,327

    Fakt, chodzi o ten string a typ? nie doczytałem tego.

    Dodam tylko że w .NET "string" czy "String" to też obiekt i to jest jedno i to samo, przynajmniej w pamięci jest on reprezentowany jako obiekt, właściwie wszystko jest tam obiektem, a że ten string jest często używany w kodzie to twórcy C# ułatwili sprawę programistom, i np.

    string myString = "aaa";

    Jest niczym innym jak:

    String aaa = new String("aaa");

    To jest dokładnie to samo, tylko inny zapis.
    Komputer: Macbook Pro wykÄ…pany w pepsi, teraz Acer Aspire 5750G
    Telefon: iPhone 4 - iOS 5.1.1
    Ludzie, używajcie alta. No chyba że wam obojętne, czy robicie komuś 'łaskę', czy 'laske'.

Odpowiedz na ten temat