如何在 Objective C 中创建 CBUUID

How to create CBUUID in Objective C

下面的崩溃让我很困惑:

        for( BLECharacteristic *chara in characteristics)
        {
            NSString *s = chara.uuid;
            CBUUID *uuid = [CBUUID UUIDWithString: (chara.uuid)]; // can't do this?

            [uuids addObject:uuid];
        }

我的 BLECharacteristic class 是:

#import <Foundation/Foundation.h>

@interface BLECharacteristic : NSObject

@property NSString *uuid;
@property bool shouldNotify;

- (void)setId:(NSString *)thisId;

@end

值不是零,我在别处将它设置为一个 NSString,通常类似于:“713D0003-503E-4C75-BA94-3148F18D941E”。其实偶:

CBUUID *uuid = [CBUUID UUIDWithString:@"713D0003-503E-4C75-BA94-3148F18D941E"];

工作得很好,但我希望事情变得更加可配置和动态。

我猜这对于真正了解 ObjC 的人来说非常简单,但我是一个卑微的 C/C++ 人并且对为什么我不能获取有效值并传递它感到困惑使用此方法创建 CBUUID。

由于您已经将 s 分配为 NSString ,所以首先 NSLog 它的值。如果有效,则使用 UUIDWithString:s。为了更加安全并避免由于 nill 或 NULL 值而导致崩溃,alloc NSString *s= [NSString stringWithFormat:@"%@"...]。不要忘记在使用值之前分配初始化您的 NSString。