刚开始接触Xcode,当前版本是Version 4.3.2 (4E2002),5.1SDK
拜读的是Yaski老师的:http://www.cnblogs.com/yaski/archive/2009/04/05/1429735.html
Objective-C 2.0 with Cocoa Foundation--- 5,Class类型,选择器Selector以及函数指针使用文中的代码进行运行的时候,遇到一个问题: void(*setSkinColor_Func) (id, SEL, NSString*);
//void(*say_Func) (id, SEL);
IMP say_Func; //typedef id (*IMP)(id, SEL, ...); say_Func这个指针使用IMP的时候运行会出错,但改成void*的指针使用就没有问题
出错的提示是:Thread 1 - [DoProxy functionPointers]
EXC_BAD_ACCESS (code=1, address=XXX....)出错停住的语句是:say_Func(cattle[1], say);- (void) functionPointers
{
setSkinColor_Func = (void (*)(id, SEL, NSString*)) [cattle[1] methodForSelector:skin];
say_Func = [cattle[1] methodForSelector:say];
//say_Func = (void (*)(id, SEL)) [cattle[1] methodForSelector:say];
setSkinColor_Func(cattle[1], skin, @"verbose");
NSLog(@"Running as a function pointer will be more efficiency!");
say_Func(cattle[1], say);
}
拜读的是Yaski老师的:http://www.cnblogs.com/yaski/archive/2009/04/05/1429735.html
Objective-C 2.0 with Cocoa Foundation--- 5,Class类型,选择器Selector以及函数指针使用文中的代码进行运行的时候,遇到一个问题: void(*setSkinColor_Func) (id, SEL, NSString*);
//void(*say_Func) (id, SEL);
IMP say_Func; //typedef id (*IMP)(id, SEL, ...); say_Func这个指针使用IMP的时候运行会出错,但改成void*的指针使用就没有问题
出错的提示是:Thread 1 - [DoProxy functionPointers]
EXC_BAD_ACCESS (code=1, address=XXX....)出错停住的语句是:say_Func(cattle[1], say);- (void) functionPointers
{
setSkinColor_Func = (void (*)(id, SEL, NSString*)) [cattle[1] methodForSelector:skin];
say_Func = [cattle[1] methodForSelector:say];
//say_Func = (void (*)(id, SEL)) [cattle[1] methodForSelector:say];
setSkinColor_Func(cattle[1], skin, @"verbose");
NSLog(@"Running as a function pointer will be more efficiency!");
say_Func(cattle[1], say);
}
http://www.cnblogs.com/yaski/archive/2009/04/05/1429735.html一个字都没差的代码