> Am 29.10.2017 um 12:58 schrieb Bertrand Gmail <[email protected]>: > > Moreover, I could put "string.size" instead of "[string size]". But I wonder > if it ist an Objc-2 feature and if it will compile with gcc and it's libobjc. > > I use somewhere else in my code : > > "screenFrame = [[NSScreen mainScreen] frame]; > screenSize = screenFrame.size;" > > Is it also Objc-2 only ? > I ask because I wanted to be Objc-1 only and I tried "[screenFrame size]" > instead but it doesn't work : I've got this message from the compiler : > > "error: bad receiver type 'NSRect' (aka 'struct _NSRect') > screenSize = [screenFrame size];" > > That's not a big deal because I already I had another more complicated code > for this borrowed from the internet. It's my will to understand what's going > wrong there.
You are confusing two things here and it isn’t even your fault. The designers of ObjC-2 are to blame. In the first case „string.size" means you are sending the message "size" to the object „string“ and this is just a different way to writing „[string size]“. In the second case „sceenFrame.size“ means you are accessing the element „size“ of the structure „screenFrame“. This is a pure C operation. ObjC-2 uses the same notation for these two complete different operations and this indeed confusing. That is the reason why we in the GNUstep project prefer to use the old fashioned [] notation for message sending. Hope this helps, Fred _______________________________________________ Discuss-gnustep mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnustep
