[#1] Objective-C po raz pierwszy
Zainspirowany wywiadem z Jackiem wypłynąłem na suchego przestwór oceanu i po 2h samo-szkolenia wspomaganego SDK i Jacka artykułem popełniłem szybkie hello. ;) Zaznajomiony ze składnią C i okolic (w fabryce piszę w X++/.net/T-SQL) zderzenie się ze składnią Obj-C khem... było ciekawym doświadczeniem i po chwili dość mocnej konfuzji teraz wydaje mi się to nawet miejscami dość czytelne. Ciekawi mnie jak w Mosie jest rozwiązany ARC? W kodzie użyłem [happ release] ale czy było to konieczne? Na logikę tak... w FS można utworzyć projekt z ARC jak by ktoś był obeznany i rzucił światło jak to działa w Mosie? W celach edu, posłużyłem się kawałkiem kodu AOS API co by zobaczyć czy się da jak widać da się. Wszelkie poprawki i sugestie mile widziane.

hello.h
#import <ob/OBObject.h>
#import <stdio.h>
#include <proto/exec.h>
#include <proto/dos.h>


@interface Hello : OBObject

-(void)helloMsg:(char *)_msgTxt;
-(void)helloAOS;

@end


hello.m
#import "hello.h"

@implementation  Hello

-(void)helloMsg:(char *)_msgTxt 
{
	printf(_msgTxt);	
}

-(void)helloAOS
{
// Kod funkcji pochodzi z Github 
// Sakura-IT/Amiga-programming-examples/C/hello-world-amiga/hello.c
// użyte w celach EDU :) z Pozdrowieniami dla imiennika!
 
        struct Library *SysBase;
	struct Library *DOSBase;

	SysBase = *((struct Library **)4UL);
	DOSBase = OpenLibrary("dos.library",0);

	if (DOSBase) {
		Write(Output(),"Hello world!\n",13);
		CloseLibrary(DOSBase);
	}
}

@end

void muiMain(int argc, char *argv[])
{	
	Hello *happ = [[Hello alloc] init];

	[happ helloMsg:"It works, Hello Obj-C! \n"];
	[happ helloAOS];
	
	[happ release];
}


Makefile
#debug
CC = ppc-morphos-gcc-10 -Wall -Og
#debug
#CC = ppc-morphos-gcc-10 -Wall -DDEBUG=1 -Og
CFLAGS = -noixemul -I/SDK/Frameworks/include -fconstant-string-class=OBConstantString -fobjc-exceptions -g -std=gnu99 -Wl,--traditional-format 
LIBS = -lob.framework -lmui.framework -lobjc -noixemul -lm -lmath
#debug
#LIBS = -lob_debug.framework -lmui_debug.framework -lobjc  -noixemul -lm -lmath -ldebug

all: 
	$(CC) $(CFLAGS) src/hello.m $(LIBS) -o bin/hello
[#2] Re: Objective-C po raz pierwszy

@RadziN, post #1

Generalnie ARC jest po to zebys nie musial uzywac retain/release, bo zajmuje sie tym kompilator.
Jesli rzeczywiscie w morphosie dziala ARC, to release w tym miejscu nie jest potrzebne.

Z lektury moze pomoc https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html
oraz to:
https://developer.apple.com/library/archive/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html#//apple_ref/doc/uid/TP40011226
[wyróżniony] [#3] Re: Objective-C po raz pierwszy

@RadziN, post #1

Przekazane od jacy:
"Aby użyć ARC, musisz skompilować kod przy użyciu clanga, kompilować z -fobjc-arc i zlinkować z -lmui.framework -lob-fw.framework -lobjfwrt.library."
[#4] Re: Objective-C po raz pierwszy

@michal_zukowski, post #3

proste ;)
[#5] Re: Objective-C po raz pierwszy

@michal_zukowski, post #3

@lef z tego co poniżej napisał michal_zukowski to w powyższym kodzie release jest konieczny bo nie był ujęty w kompilacji.

@michal_zukowski
Genialnie! Właśnie o to mi chodziło. Michale, Jacku bardzo dziękuję :)

@MaaG^dA
Ano :) Wieczorem jak będzie chwila trzeba to sprawdzić :P
[#6] Re: Objective-C po raz pierwszy

@RadziN, post #5

@RadziN Zakladalem, ze pytasz czy jest potrzebne release w sytuacji gdy ARC jest _wlaczony_.
BTW, jesli na MOSie jest w maire nowy clang, to mozesz sprawdzic sobie podczas kompilacji uzywajac
#if __has_feature(objc_arc)
[#7] Re: Objective-C po raz pierwszy

@RadziN, post #1

X++ ? No szacuneczek dla kolegi :)
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem