gpt4 book ai didi

ios - 在 Objective-C 类中使用时,在调试区域看不到 Swift 对象层次结构

转载 作者:IT王子 更新时间:2023-10-29 05:43:26 28 4
gpt4 key购买 nike

我的问题可能很简单,但我却迷失在其中。任何评论、想法、帮助、预测都会非常有用。

这是我的类(class)

TrialSwiftClass.swift

import Foundation

@objc public class TrialSwiftClass : NSObject{
var first : String?
var second : NSString?
var third : NSNumber = 0


override init(){
super.init()
}

init(data:NSArray){

self.first = data[0] as? String
self.second = data[1] as? NSString
self.third = data[2] as! NSNumber
}
}

TrialObjectiveCClass.h

#import <Foundation/Foundation.h>

@interface TrialObjectiveCClass : NSObject

@property (nonatomic, strong) NSString *first;
@property (nonatomic, strong) NSString *second;
@property (nonatomic, assign) NSNumber *third;

- (instancetype)initWithArray:(NSArray *)data;

@end

TrialObjectiveCClass.m

#import "TrialObjectiveCClass.h"

@implementation TrialObjectiveCClass


- (instancetype)initWithArray:(NSArray *)data{
self.first = data[0];
self.second = data[1];
self.third = data[2];

return self;
}
@end

现在问题来了。当我在我的 ViewController.m 中使用这两个类时,其中包含以下代码:

#import "ViewController.h"
#import "TrialObjectiveCClass.h"
#import "Codemaster-Swift.h" //Automatically created header to use Swift code in Objective-C


@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];

NSArray *trialArray = @[@"FirstString", @"SecondString", @99];


//First the Swift part
TrialSwiftClass *obj = [[TrialSwiftClass alloc] initWithData:trialArray];

NSLog(@"%@", obj.first);
NSLog(@"%@", obj.second);
NSLog(@"%@", obj.third);


//Now the Objective-C part
TrialObjectiveCClass *obj2 = [[TrialObjectiveCClass alloc] initWithArray:trialArray];
NSLog(@"%@", obj2.first);
NSLog(@"%@", obj2.second);
NSLog(@"%@", obj2.third);


}

如果我在 ViewController.m 的最后一个 NSLog 中放置一个断点,这是我在调试区域中看到的: enter image description here

我的日志显示了对象属性的正确值。

为什么我看不到我的 Swift 类的层次结构,但可以看到我的 Objective-C 类?如何解决这个问题?

最佳答案

Swift 类中的变量作为属性暴露给 ObjC。目前 Locals View 不显示对象的属性,仅显示其 ivars。无论类是来自 ObjC 还是 Swift,都是如此。这就是为什么 swift 变量不显示在局部 View 中的原因。

您可以通过在 lldb 控制台中使用表达式命令查看对象的属性来解决此问题。例如,在您的示例中停止,您可以执行以下操作:

(lldb) expr obj.first
(__NSCFConstantString *) $0 = 0x00000001002d1498 @"FirstString"

等等

关于ios - 在 Objective-C 类中使用时,在调试区域看不到 Swift 对象层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34244331/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com