Второй фрагмент - это приведение или параметр метода.Ни один из них не имеет ничего общего с созданием экземпляров.
Если в объявлении метода встречается (Class *)myClass
, он просто определяет, каким типом должен быть параметр метода.Например, - (void) method:(Class *)myClass
- это метод, который возвращает void и принимает один аргумент типа Class*
.
Если (Class *)myClass
встречается в другом коде, это приведение.По сути, он говорит, что нужно переосмыслить myClass
как указатель на объект типа Class
, независимо от его типа.Это похоже на приведение чисел - если x
является int
, (float)x
преобразует его как float
, так что вы можете использовать его в арифметике с плавающей точкой.Вы против использования приведения с объектами Objective-C.В одном месте вы увидите такие вещи, как приведение NS-объектов к CF-объектам, как в (CFURLRef)[NSURL fileURLWithPath:path]
.Но чаще всего объекты разных типов не будут правильно разыгрываться.
Кроме того, у вас есть ошибка в вашем первом фрагменте.На самом деле это будет [[Class alloc] init]
.Вы должны позвонить alloc
, а затем init
.И [init]
не имеет смысла - он совершенно не соответствует синтаксису [object method]
Objective-C.