Posiadam doświadczenie z czystym kodowaniem ARC. Jako funkcja kompilatora honoruje rodzinę metod Objctive-C, która w razie potrzeby zachowuje i zatrzymuje połączenia.Konwencje nazewnictwa Objective-C z ARC i możliwymi zastrzeżeniami
Wszystkie metody, które zaczynają się alloc
, mutableCopy
, copy
i new
utworzyć nowy obiekt. Zwiększają liczbę zatrzymań. W konsekwencji ARC zwolni dowolny wskaźnik (a tym samym obiekt z nim powiązany), kiedy już go nie potrzebuję.
Myślę, że problemy mogą powstać, gdy piszę metody, które nie są zgodne z konwencjami nazewnictwa. Na przykład, jeśli napiszę metodę taką jak newCustomer
, która w pierwszej wersji zwraca obiekt autoreleased, podczas gdy w drugiej wersji nie, co mogłoby się stać?
W szczególności, moje pytania są następujące (należą one do tego samego rozumowania):
- Co się stanie, jeśli powołanie i nazywane są zarówno kod skompilowany z ARC?
- (a) Co się stanie, jeśli kod wywołujący zostanie skompilowany z ARC, podczas gdy wywołany zostanie skompilowany z nie-ARC?
- (b) Co stanie się, jeśli kod wywołujący zostanie skompilowany z nie-ARC, podczas gdy wywołany zostanie skompilowany z ARC?
Byłoby to docenić odpowiedź, która pokazuje, jak działa ARC pod maską (objc_release
, objc_retainAutoreleasedReturnValue
itd.).
Z góry dziękuję.
'nowe' z Objective-C? –
@ ott-- Przepraszam, Co masz na myśli? Dzięki. –
1) Nie rób tego. 2) Jeśli zignorujesz (1), myślę, że * istnieją pewne modyfikatory podkreślenia dla deklaracji metody, które mogą być używane do łatania poprawek. –