• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: C callbacks with NSNotificationCenter?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: C callbacks with NSNotificationCenter?


  • Subject: Re: C callbacks with NSNotificationCenter?
  • From: Alastair Houghton <email@hidden>
  • Date: Wed, 07 Sep 2016 22:28:59 +0100

> On 7 Sep 2016, at 22:11, Jens Alfke <email@hidden> wrote:
>
>
>> On Sep 7, 2016, at 10:03 AM, Alastair Houghton <email@hidden> wrote:
>>
>> All of it can.  Objective-C is just C with some syntactic sugar on top.
>
> There’s a large amount of semantic sugar too, i.e. the runtime libraries. (If you think the runtime part must be trivial, go read some of Mike Ash’s posts about the implementation of objc_msgsend. That’s some of the most insanely optimized code I’ve ever seen.)

Mike’s site is generally a good read for that kind of thing.  For those who don’t know:

  https://mikeash.com/

Incidentally, on the how-fast-is-objc_msgSend(), according to Mike’s latest Mac figures, it costs on average less than two C++ virtual method calls, and indeed less than division.  See

https://mikeash.com/pyblog/friday-qa-2016-04-15-performance-comparisons-of-common-operations-2016-edition.html

>> Really.  There’s nothing magic going on.  (In fact, the original compilers were really just preprocessors that churned out C code.)
>
> You can say this about nearly any compiler, though.

Sort of, yes, but in the case of Objective-C I think there was a conscious intention to keep the Objective part separate from the C part.  Put another way, you could make Objective versions of most other languages, if you wanted, by making similar syntactic additions to them to the ones made for Objective-C, and that looks to me to be a deliberate design decision.  That’s not quite the same as C++ or Go, which were always intended to be complete languages of their own.

Anyway, the point I was trying to make (to Andreas) was that he shouldn’t be scared of using Objective-C because it’s going to do all kinds of magic in his program that he doesn’t understand.

> But yes, you can use the Obj-C runtime API from C to do pretty much anything you can do in Obj-C, like calling methods and implementing classes. It’s just much, much messier, error-prone, and difficult to read compared to writing the damn code in Obj-C.

Absolutely.  IMO Andreas really *should* just use Objective-C for the Mac-specific bits of code.

> There’s no pride in refusing to switch languages. I abjured C++ a long time ago, but guess what, my current project is 99% C++ because that language best meets the performance and portability requirements.

Same here, as it happens.  C++11/14 is *much* better than the previous iteration, though it’s still lacking in some areas.

> Next time maybe I’ll be using Swift, or Rust, or Pony. C is an ancient, primitive language and it’s not a good career move to refuse to move past it :)

Agreed.  I’d love to be using Swift right now, actually, but I have portability concerns it doesn’t address and the language itself is still not stable.  Both will resolve themselves.  Rust and Pony look interesting also.

Kind regards,

Alastair.

--
http://alastairs-place.net


_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden


References: 
 >C callbacks with NSNotificationCenter? (From: Andreas Falkenhahn <email@hidden>)
 >Re: C callbacks with NSNotificationCenter? (From: Alastair Houghton <email@hidden>)
 >Re: C callbacks with NSNotificationCenter? (From: Jens Alfke <email@hidden>)

  • Prev by Date: Re: C callbacks with NSNotificationCenter?
  • Next by Date: Re: C callbacks with NSNotificationCenter?
  • Previous by thread: Re: C callbacks with NSNotificationCenter?
  • Next by thread: Re: C callbacks with NSNotificationCenter?
  • Index(es):
    • Date
    • Thread