C语言 attribute的问题

C语言 attribute的问题,第1张

对于你的问题不太明白。

#define __init_call __attribute__ ((unused,__section__ (".initcall.init ")))

参考GCC说明,意思是说所有以__init_call前缀定义的函数在链接过程中都放到名字为.initcall.init的段(section)里面。也就是说,如果一个函数冠以__init_call,那么它在编译链接的时候就会放到.initcall.init这个段里面。

第一种:runtime.h里的方法BOOL class_addProperty(Class cls,const char *name, const objc_property_attribute_t *attributes,unsigned int attributeCount) #include <objc/runtime.h> #import <Foundation/Foundation.h> @interface SomeClass : NSObject { NSString *_privateName}@end@implementation SomeClass- (id)init { self = [super init] if (self) _privateName = @"Steve" return self}@endNSString *nameGetter(id self, SEL _cmd) { Ivar ivar = class_getInstanceVariable([SomeClass class], "_privateName") return object_getIvar(self, ivar)} void nameSetter(id self, SEL _cmd, NSString *newName) { Ivar ivar = class_getInstanceVariable([SomeClass class], "_privateName") id oldName = object_getIvar(self, ivar) if (oldName != newName) object_setIvar(self, ivar, [newName copy])}int main(void) { @autoreleasepool {objc_property_attribute_t type = { "T", "@/"NSString/"" } objc_property_attribute_t ownership = { "C", "" }// C = copy objc_property_attribute_t backingivar = { "V", "_privateName" } objc_property_attribute_t attrs[] = { type, ownership, backingivar } class_addProperty([SomeClass class], "name", attrs, 3) class_addMethod([SomeClass class], @selector(name), (IMP)nameGetter, "@@:") class_addMethod([SomeClass class], @selector(setName:), (IMP)nameSetter, "v@:@") id o = [SomeClass new] NSLog(@"%@", [o name]) [o setName:@"Jobs"] NSLog(@"%@", [o name]) }}输出:SteveJobs 第二种:- (id)valueForUndefinedKey:(NSString *)key 第三种:static char const * const ObjectTagKey@implementation NSObject (ExampleCategoryWithProperty)@dynamic objectTag- (id)objectTag { return objc_getAssociatedObject(self, ObjectTagKey) } - (void)setObjectTag:(id)newObjectTag { objc_setAssociatedObject(self, ObjectTagKey, newObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC)}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11419640.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存