Сбой Objective-C: создание объекта из класса - PullRequest
0 голосов
/ 28 сентября 2018
@interface TestObject:NSObject
+(instancetype)Object;
@end

@implementation TestObject
+(instancetype)Object{
    TestObject *aObject = [[TestObject alloc]init];
    return aObject;
}

Приведенный выше код хорошо работает!

Но Xcode выдает исключение «EXC_BAD_ACCESS (code = 1, address = 0x0)», когда я изменил код на следующее:

@interface TestObject:NSObject
+(id)Object;
@end

@implementation TestObject
+(id)Object{
    Class class =object_getClass(self);
    id aObject = [[class alloc]init];
   return aObject;
}
@end

Может кто-нибудь сказать мне, почему?Thx

enter image description here

1 Ответ

0 голосов
/ 28 сентября 2018

self в статическом методе objective-c ЕСТЬ класс .

Class class = object_getClass(self);

возвращает метакласс .

Вы можетепроверьте это с помощью:

Class class = object_getClass(self);
Class class2 = objc_getMetaClass("TestObject");
Class class3 = self;

class & class2 будет тем же самым (метакласс), что и class3 фактический класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...