【发布时间】:2011-02-16 12:38:20
【问题描述】:
我编写了一个名为 SomeValues 的单例,我在其中初始化了一个 foo NSMutableArray。然后我尝试编写一个函数 SetBFSV 来从不同的控制视图设置这个数组的值。
@interface SomeValues : NSObject {
NSMutableArray *foo;}
+ (SomeValues *) sharedInstance;
@implementation
...
- (void) SetBFSV:(char)lbl ToVal:(long)BFSvl{
NSNumber *ValueBFSvl = [NSNumber numberWithLong:BFSvl];
NSString *Strlbl = [[NSString alloc] stringWithFormat:@"%s",lbl];
[foo setValue:ValueBFSvl forKey:Strlbl];
}
我知道 setValue 需要一个 NS 对象作为值和键,但我不能将我的函数声明为
(void) SetBFSV:(NSString)lbl ToVal:(NSNumber)BFSvl
因为它没有编译并出现错误:“不能使用对象作为方法的参数”。
我在一个 ControlView 中编写了这段代码:
SomeValues *myBFSV = [SomeValues sharedInstance];
const unsigned char *Bar = (unsigned char *)[@"Label1" UTF8String];
NSLog(@"The string %s", Bar);
[myBFSV SetBFSV:Bar ToVal:2.5];
编译时我在最后一行收到警告:
警告:传递 'SetBFSV:ToVal:' 的参数 1 从指针生成整数而不进行强制转换
哪个整数?我越来越愚蠢地四处寻找它。运行时,我从 NSLog 中打印出来,但随后程序显然会因以下错误而崩溃:
'NSInvalidArgumentException',原因:'-[NSPlaceholderString stringWithFormat:]:无法识别的选择器发送到实例 0x4e03280'
很明显,我向 stringWithFormat 传递了一些错误,但我不明白是什么。
感谢您的帮助。祝你有美好的一天!
/卢卡
【问题讨论】:
标签: iphone objective-c nsstring singleton char