Object C vs C vs C++ vs Java vs C#
Object C dynamic binding, runtime check the param types, if param need int you pass a float, only runtime know the error
(Object C implement the object method call though message mechanism, check Object C wikipedia)
C,C++,Java,C# no-dynamic binding, compile time check
(But in java, you could pass a Object class, and do is instance of () check to work around the dynamic)
Object C even provide forward, that method not exist in one class, it can forward to its subclass
(so there is no compile time check, its runtime)
Object C block == C function pointer
java runnable class’s runnable method is similar
Object C, C, C++ has head file
java, C# has no head file
(because every file is class, the public method and properties are just the heads)
Object C has no name space
So every file name should has a prefix, it’s stupid
java, C#, C++ has
Object C in IOS has no GC (macOS has)
Object C retain could count the reference of object.
inside release, it only free memory when object reference count still > 1
Because Object C has no GC, when give a pointer to new object memory need free origin and assign value two steps, so there is atomic (synchronize self) / nonatomic (no thread safety, may got null pointer in two threads race condition)
java, C# has GC (only assign value one step, always atomaic)
How Object C implement the java inner class??
(inner class could access the outer class properties)