我只是盯着玩Objective C(编写玩具iPhone应用程序),我很好奇用于发送消息的底层机制.我非常了解C++中的虚函数通常是如何实现的,以及相对于静态或非虚方法调用的成本是多少,但我没有任何Obj-C背景知道如何发送消息.浏览我发现这个松散的基准测试,它提到IMP缓存的消息比虚函数调用更快,而虚拟函数调用反过来比标准消息发送更快.
我不是要优化任何事情,只是更深入地了解消息的分派方式.
我知道其中一些问题可能是"依赖于实现的",但实际上只有一个实现非常重要.
我正在寻找一种简单的方法来将我的属性直接设置为NSMutableDictionary,它是一个实例变量.即:
KVCModle.h:
@interface KVModel : NSObject {
NSMutableDictionary * data;
}
@property(nonatomic,assign)NSString * string1;
@property(nonatomic,assign)NSString * string2;
@end
Run Code Online (Sandbox Code Playgroud)
KVCModel.m
#import "KVModel.h"
@implementation KVModel
-(id)init
{
self = [super init];
if(self)
{
data = [[NSMutableDictionary alloc] init];
}
return self;
}
-(NSString *)string1
{
return [data objectForKey:@"string1"];
}
-(NSString *)string2
{
return [data objectForKey:@"string2"];
}
-(void)setString1:(NSString *)_string1
{
[data setObject:_string1 forKey:@"string1"];
}
-(void)setString2:(NSString *)_string2
{
[data setObject:_string2 forKey:@"string2"];
}
-(void)dealloc
{
[data release];
[super dealloc];
}
@end
Run Code Online (Sandbox Code Playgroud)
我试图重写setValue:ForKey:和valueForKey: …