Ресурси с вопросами:
https://habrahabr.ru/post/273487/
+ некоторые свои :)
>> Методы +(void) и -(void)
General:
+ (void) - метод который вызывается на классе. НП: [NSString alloc]
- (void) - метод который вызывается на объекте. НП: [NSString init]
Links:
http://stackoverflow.com/questions/3215979/void-or-void-difference
>>что такое void *?
General:
"void *" - ссылка на некоторый кусок памяти с не типизированным / неизвестным содержимым
More:
- "id" - ссылка на некоторый случайный Objective-C объект неизвестного класса
- "id<NSObject>" - ссилка на обект неопределенного типа, но он поддерживает методи @protocol NSObject, тоисть на етом обекте можно будет визвать "- (BOOL)respondsToSelector:(SEL)aSelector;" но не метод "- (id)copy;"
- При попытке вызова метода на "void *" компилятора будет показывать варнинг
- На "id" объекте можно вызвать любую функцию с
@interface
- http://stackoverflow.com/questions/1304176/objective-c-difference-between-id-and-void
- http://unixjunkie.blogspot.com/2008/03/id-vs-nsobject-vs-id.html
Examples:
int
year
=
1967
;
void
*
genericPointer
=
&
year
;
int
*
intPointer
=
(
int
*
)
genericPointer
;
NSLog
(
@"%d"
,
*
intPointer
)
;
>>а что означает просто void?
General:
void - обозначает что функция ничего не возвращает.
Links:
http://stackoverflow.com/questions/1966959/what-does-void-mean-in-this-function-declaration-voidawakefromnib
>>что такое id?
General:
"id" - ссылка на некоторый случайный Objective-C объект неизвестного класса
>>в чем разница между void * и id?
General:
Смотреть выше.
>>как определен id?
Так как id ето любой класс objtctive-c значит он имеет isa, соответственно на основе isa ми можем узнать такую информацию:
struct objc_class {
Class isa;
#if !__OBJC2__
Class super_class OBJC2_UNAVAILABLE;
const char *name OBJC2_UNAVAILABLE;
long version OBJC2_UNAVAILABLE;
long info OBJC2_UNAVAILABLE;
long instance_size OBJC2_UNAVAILABLE;
struct objc_ivar_list *ivars OBJC2_UNAVAILABLE;
struct objc_method_list **methodLists OBJC2_UNAVAILABLE;
struct objc_cache *cache OBJC2_UNAVAILABLE;
struct objc_protocol_list *protocols OBJC2_UNAVAILABLE;
#endif
} OBJC2_UNAVAILABLE;
Links:
https://habrahabr.ru/post/148922/
>>можно ли создать структуру и привести к id?
Немає коментарів:
Дописати коментар