Is there a difference between relating to an Object in a 'Polymorphic' way with the type id than as NSObject *?
In what way is:
NSString* aString = @"Hello";
id anObj = aString;
different than:
NSString* aString = @"Hello";
NSObject* anObj = aString;
id is a language keyword but the NSObject is the base class in objective c. For id, you dont need to typecast the object. But for NSObject, you have to typecast it into NSObject.
The root class of most Objective-C class hierarchies, from which subclasses inherit a basic interface to the runtime system and the ability to behave as Objective-C objects. iOS 2.0+ iPadOS 2.0+ macOS 10.0+ Mac Catalyst 13.1+ tvOS 9.0+ watchOS 2.0+
In Swift 3, the id type in Objective-C now maps to the Any type in Swift, which describes a value of any type, whether a class, enum, struct, or any other Swift type.
id is a special keyword used in Objective-C to mean “some kind of object.” It does not contain isa pointer(isa, gives the object access to its class and, through the class, to all the classes it inherits from), So you lose compile-time information about the object.
NSString* aString = @"Hello";
id anObj = aString;

NSObject contain isa pointer.
NSString* aString = @"Hello";
NSObject* anObj = aString;

From Objective-C Is a Dynamic Language
Consider the following code:
id someObject = @"Hello, World!";
[someObject removeAllObjects];
In this case, someObject will point to an NSString instance, but the compiler knows nothing about that instance beyond the fact that it’s some kind of object. The removeAllObjects message is defined by some Cocoa or Cocoa Touch objects (such as NSMutableArray) so the compiler doesn’t complain, even though this code would generate an exception at runtime because an NSString object can’t respond to removeAllObjects.
Rewriting the code to use a static type:
NSString *someObject = @"Hello, World!";
[someObject removeAllObjects];
means that the compiler will now generate an error because removeAllObjects is not declared in any public NSString interface that it knows about.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With