Вы можете изменить отображение меню активатора на блок
.v-menu__activator {
display: block !important;
}
Вы говорите об интроспекции свойств среды выполнения, которая, как выясняется, Objective-C очень хороша в .
В случае, который вы описываете, Я предполагаю, что у вас есть такой класс:
@interface MyClass
{
NSArray * stuff;
}
@property (retain) NSArray * stuff;
@end
, который кодируется в XML примерно так:
<class>
<name>MyClass</name>
<key>stuff</key>
</class>
Из этой информации вы хотите воссоздать класс и также присвоить ему соответствующее значение для материала
].
Вот как это может выглядеть:
#import <objc/runtime.h>
// ...
Class objectClass; // read from XML (equal to MyClass)
NSString * accessorKey; // read from XML (equals @"stuff")
objc_property_t theProperty =
class_getProperty(objectClass, accessorKey.UTF8String);
const char * propertyAttrs = property_getAttributes(theProperty);
// at this point, propertyAttrs is equal to: T@"NSArray",&,Vstuff
// thanks to Jason Coco for providing the correct string
// ... code to assign the property based on this information
Документация Apple (ссылка выше) содержит все грязные подробности о том, что вы можете ожидать увидеть в propertyAttrs
.
Вы можете использовать сообщение isKindOfClass
if([something isKindOfClass:NSArray.class])
[somethingElse action];
Предпочтительным способом является использование методов, определенных в NSObject Protocol .
В частности Чтобы определить, является ли что-то экземпляром класса или подкласса этого класса, вы используете -isKindOfClass:
. Чтобы определить, является ли что-то экземпляром определенного класса, и только этим классом (т.е. не подклассом), используйте -isMemberOfClass:
Итак, для вашего случая вы захотите сделать что-то вроде этого:
// Using -isKindOfClass since NSMutableArray subclasses should probably
// be handled by the NSMutableArray code, not the NSArray code
if ([anObject isKindOfClass:NSMutableArray.class]) {
// Stuff for NSMutableArray here
} else if ([anObject isKindOfClass:NSArray.class]) {
// Stuff for NSArray here
// If you know for certain that anObject can only be
// an NSArray or NSMutableArray, you could of course
// just make this an else statement.
}
Дешевый ответ: используйте источник NSObject + Properties здесь .
Он реализует ту же методологию, описанную выше.