2013-03-01 9 views
13

Hej Właśnie zaczynam programowanie w ios dzisiaj i stoję przed tym erro.Synteza słabych właściwości dozwolona tylko w trybie łuku lub gc

plz mi pomóc, aby usunąć ten błąd

plz zasugerować mi jakieś fajne samouczek ios developer

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

@end 


#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController 
@property (weak, nonatomic) IBOutlet UITextField *txtUsername; 
@property (weak, nonatomic) IBOutlet UITextField *txtPassword; 
- (IBAction)loginClicked:(id)sender; 
- (IBAction)backgroundClick:(id)sender; 


@end 
+0

jaki błąd napotkasz? –

Odpowiedz

9

Jeśli dopiero zaczynasz, powinieneś po prostu enable ARC. Zaoszczędzi ci to wiele bólów głowy, a to rozwiąże ten problem.

+3

Inni będą twierdzić, że ludzie, którzy dopiero zaczynają, powinni wyłączyć ARC, aby mogli lepiej poznać i zrozumieć zarządzanie pamięcią. Korzystanie z ARC jest o wiele łatwiejsze, ale nie wiesz, co się dzieje. Ten sam argument można argumentować za używaniem IB w przeciwieństwie do tworzenia interfejsu w kodzie. IB sprawia, że ​​niektóre rzeczy są łatwiejsze, ale kiedy to nie działa, nie masz pojęcia, co robić. – rmaddy

+3

@rmaddy: Zgadzam się z tobą, ludzie i odświeżacze IT (początkujący) opowiadają się za prostszym rozwiązaniem, a nie skomplikowanym. I to jest szeroki temat dyskusji. I nikt nie może wygrać w tym temacie. –

+0

@rmaddy: Mogę zgodzić się z tym wyjątkiem, że ARC jest ogromną wygraną w tak wielu przypadkach, w których dla początkującego byłoby zbyt łatwo zepsuć 'retain's i' release's. ARC nie zwalnia cię z zajmowania się zarządzaniem pamięcią, ale zajmuje się dość nieprzyjemnych (automatycznych) rzeczy, które programiści mogą skupić się na problemach, które są w zasięgu ręki. – nneonneo

20

Jeśli nie używasz ARC, nie możesz użyć weak. W przypadku odniesień IBOutlet w kodzie innym niż ARC zamiast nich należy zastąpić odniesienia do weak z retain. (Jest to trochę skomplikowane, ale ogólnie użyć assign zamiast weak w non-ARC kodu, ale dla IBOutlet referencji, należy użyć retain).

Jeszcze lepiej, jak sugeruje nneonneo, należy użyć ARC.

+0

Nie jestem pewien co do wykorzystania zatrzymania dla IBOutlet w kodzie niezgodnym z kodami łukowymi. Jeśli używasz IBOutlet dla obiektów utworzonych na XIB, nie masz ich własności, więc powinieneś użyć assign. –

+0

@diogot Nie jestem niezadowolony z twojej pozycji, ale Apple historycznie radził, aby "zachować" dla punktów sprzedaży w kodzie przed ARC. Może to być unikanie zwisających wskaźników w systemie iOS 5.x i wcześniejszych, gdy są publikowane widoki. Dokumentacja 'viewDidUnload' zdaje się wzmacniać komunikat, że właśnie tam należy wydać swoje sklepy. – Rob

+0

Byłem dość pewny co do 'przypisać', ale szukałem wokół i nawet bez znalezienia oficjalnego dokumentu znalazłem kilka dowodów, że' zachowaj' powinien być użyty zamiast tego. –

Powiązane problemy