On 27/03/2021 19:11, Adriaan van Os via fpc-pascal wrote: > "The only way to add a traditional property—backed by a new instance > variable—to an existing class is to use a class extension, as described > in Class Extensions Extend the Internal Implementation." > > So, the FPC PasCocoa/Differences wiki seems to ignore a crucial > difference between ObjC categories and ObjC class extensions, namely the > ability to add properties to an existing class.
I'm not sure that was already possible when that wiki page was written. It was probably only added later in Objective-C 2.0. > Am I correct that the latter is not possible in Objective-Pascal ? You are correct. OTOH, it feels kind of useless in general, because "A class extension bears some similarity to a category, but it can only be added to a class for which you have the source code at compile time (the class is compiled at the same time as the class extension)." So there's not really much difference between a class extension with fields and adding private fields to the class declaration itself. It's more something to keep information completely out of the header files in Objective-C. While you can use include files to separate your header and implementation of a unit in Pascal, and then only distribute the header include files so people can look at them, this feels like a rather niche use case. Jonas _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal