Совершенно не хочу вызывать у вас гнев, но это был второй ответ, связанный с iOS, в вашем профиле. Мне кажется, что нужно добавить только то, что мы можем ссылаться на экземпляр как на «себя» изнутри его реализации. Вы бы защищали это как существенное дополнение к принятому ответу трехлетней давности?
danh
@danh Я вижу, ты меня преследуешь. Повезло тебе!
Katedral Pillon
Извините, я только что нажал на это и подумал, стоит ли что-нибудь сказать. Просто хотел немного пощекотать ребра, но я знаю, что в этих полуликих условиях нрав довольно быстро накаляется. Спасибо за добродушие. (Фактически +1 за практику инкапсуляции).
danh
2
Это ничего не добавляет к ответу, кроме неприятностей.
Ответы:
NSStringFromClass([instance class])
должен сделать свое дело.источник
#import <objc/objc-runtime.h>
вызвать класс в экземпляре.если все, что вы хотите сделать, это протестировать объект, чтобы узнать, относится ли он к типу определенного класса
BOOL test = [self isKindOfClass:[SomeClass class]];
источник
Изнутри самого класса
-(NSString *) className { return NSStringFromClass([self class]); }
источник
Просто добавьте категорию:
NSObject+Extensions.h - (NSString *)className; NSObject+Extensions.m - (NSString *)className { return NSStringFromClass(self.class); }
Затем используйте следующий код:
NSString *className = [[SomeObject new] className];
или даже:
NSString *className = SomeObject.new.className;
Чтобы использовать его где угодно, добавьте категорию в файл YourProject.pch.
источник
Вы также можете использовать
[[self class] description]
источник
OBJC:
NSStringFromClass([instance class])
SWIFT
Из экземпляра:
От типа:
String(describing: self)
источник
Если вы ищете, как получить имя класса в Swift, вы можете использовать рефлекс для получения информации об объекте.
let tokens = split(reflect(self).summary, { $0 == "." }) if let typeName = tokens.last { println(typeName) }
источник
self.dynamicType