Odpowiedz na ten temat
Pokaż wyniki od 1 do 3 z 3
  1. Avatar pio11
    Dołączył
    Mar 2008
    Postów
    1,591

    Cytuj | #1

    Witam, dziś mam coś dużo pytań . Może mój problem wynika z późnej pory ale na wszelki wypadek spytam. Mianowicie mam klasę np. "finder", która na podstawie danej ścieżki wyświetla mi pliki. W appDelegate dodaję ją do widoku obiekt1 klasy finder i obiekt1.delegate = self. Teraz w samej klasie finder istnieje metoda, która do widoku dodaje kolejny obiekt klasy "finder" o nazwie obiekt2. Czy mogę zrobić coś takiego: obiekt2.delegate = obiekt1.delegate. Oto pseudokod:
    AppDelegate:
    Kod:
    #import "finder.h"
    
    int like;
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        finder *obiekt1 = [[finder alloc] initWithPath:path];
        obiekt1.delegate = self;
    
        self.window.rootViewController = self.obiekt1;
    
        [self.window makeKeyAndVisible];
        return YES;
    }
    - (void)delegacjaZFindera:(int)foo {
        like = foo;
    }
    finder:
    Kod:
    #import "finder.h"
    
    - (void)cośtamPressed {
        finder *obiekt2 = [[finder alloc] initWithPath:path];
        obiekt2.delegate = self.delegate;
        [delegate delegacjaZFindera:12];
    }
    Czy w tym wypadku obiekt1 i obiekt2 po wykonaniu metody wyślą swoje delegate wprost do AppDelegate?
    Komputer: Mac Mini C2D 2.0 | 120 GB | 500 GB | 3 GB RAM | Lion
    Telefon: LG-P500 iPhone 3G 16 GB | 4.2.1 - R.I.P
    Tablet: iPad 32 GB WiFi - 3G - znaleziono pod choinką


  2. Avatar wezuwiusz
    Dołączył
    Feb 2008
    Skąd
    Dublin, Katowice
    Postów
    783

    Cytuj | #2

    poniewaz 'self.delegate' wskazuje na AppDelegate to teoretycznie nie powinno byc przeciwskazan zebys przypisal obiekt2.delegate = self.delegate (delegate obiektu 1 czyli AppDelegate). Jednak zastanowilbym sie nad takim rozwiazaniem ze wzgeldu na bledy mogace wystapic, co np. jezeli zdealokujesz obiekt1, wtedy jego delegate bedzie nil i tam tez poleci message albo jakies inne problemy z zarzadzaniem pamiecia... jezeli chcesz zeby zawsze wskazywalo na AppDelegate to rozwazylbym ojektX.delegate = [[UIApplication sharedApplication] delegate] ewentualnie pobawic sie z NSNotification/NSNotificationCenter.
    Komputer:  iMac 27"  iPhone4  iPad tv² +
    WWW: http://www.tridrops.com
    ____________________________/"'\,,, WezUwiUsz_
    Moja strona na FB
    Moje aplikacje: Easy Cash, Dock Clock, Flat Cube, Crazy Emoji

  3. Avatar pio11
    Dołączył
    Mar 2008
    Postów
    1,591

    Cytuj | #3

    Wezuwiusz dostaje takie ostrzeżenie: warning: Semantic Issue: Passing 'id<UIApplicationDelegate>' to parameter of incompatible type 'id<FileViewControllerDelegate>' przy tej linijce:
    Kod:
    controller.delegate = [[UIApplication sharedApplication] delegate];


    ---------- Wpis dodano o 21:28 ---------- Poprzedni wpis dodano o 21:17 ----------

    Nie wiem czemu ale delegate nie reaguje na zakorzeniony obiekt w obiekcie tej samej klasy
    Komputer: Mac Mini C2D 2.0 | 120 GB | 500 GB | 3 GB RAM | Lion
    Telefon: LG-P500 iPhone 3G 16 GB | 4.2.1 - R.I.P
    Tablet: iPad 32 GB WiFi - 3G - znaleziono pod choinką

Odpowiedz na ten temat