【问题标题】:Objective C Converting a char * to a float and setting to a propertyObjective C将char *转换为float并设置为属性
【发布时间】:2012-08-16 09:36:04
【问题描述】:

在我的接口头文件中我有:

@proprty (readwrite, assign) float longitude;

如果我像这样为该属性赋值:

loc.longitude = [[NSString stringWithUTF8String:(const char *)attr->children->content] floatValue];

调试器说 [loc longitude] 似乎没有指向有效的对象。

但如果我使用

NSLog(@"%f", [[NSString stringWithUTF8String:(const char *)attr->children->content] floatValue]);

浮点值被写入。

我做错了什么,好像没有将值分配给属性?

【问题讨论】:

    标签: iphone objective-c ios properties casting


    【解决方案1】:

    您说“调试器说 [loc longitude] 似乎没有指向有效对象。”

    我怀疑您正在尝试使用此调试器命令:

    po [loc longitude]
    

    问题是[loc longitude] 确实不是一个Objective-C 对象。这是一个float。您需要使用不同的命令来打印它:

    p (float)[loc longitude]
    

    或者,在最新版本的 Xcode/lldb 上,您可以直接使用点语法:

    p loc.longitude
    

    【讨论】:

    • Protip:使用 lldb(不是 gdb),您实际上可以在任何可以使用 po 的地方使用 p
    • 谢谢大家,我是个白痴,我使用的是 PO,属性声明中是否需要读写,或者我可以承认吗?
    • ReadWrite 它是属性的默认行为。您不需要定义读写。
    【解决方案2】:

    确实,[loc longitude] 不是一个对象。这意味着你不能在调试器中使用po;请改用p

    【讨论】:

    • 谢谢大家,我是个白痴,我使用的是 PO,属性声明中是否需要读写,或者我可以承认吗?
    猜你喜欢
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 2011-07-05
    • 2020-08-22
    相关资源
    最近更新 更多