gpt4 book ai didi

ios - 如何访问 Swift View Controller 中的私有(private) Objective-C 变量?

转载 作者:可可西里 更新时间:2023-11-01 00:55:32 25 4
gpt4 key购买 nike

我对 Objective-C 几乎一无所知。我正在为 AVCaptureSession 使用 Obj-C 框架。我需要访问相机 session 的 AVCaptureVideoDataOutput。

在 .m 文件中, session 被初始化和设置。

@property (nonatomic, strong) AVCaptureSession *session;

我无法将属性从 .m 文件移动到 .h 文件,因为 .m 文件需要它来设置它的所有功能。

我还尝试分别在 .m 和 .h 中将它们设为读写/只读以避免重新声明问题,但是当我在启动相机后调用 camera.session 时,“session”返回 nil 并且应用程序崩溃。

我不知道将所有代码移动到 .h 文件中以便公开访问是否会有任何问题?

如何从我的 View Controller 中的 .m 文件访问 session 属性?

最佳答案

将属性移动到 .h。公开它并使其对 .m 可用,因为 .m 文件默认导入 .h。示例:

// CameraViewController.h
@interface CameraViewController : UIViewController
@property (nonatomic, strong) AVCaptureSession *session;
@end

// CameraViewController.m
#import "CameraViewController.h" // <- notice the import, `session` is accessible internally.

至于 session 属性为 nil 可能是因为您还没有用值初始化它。在您的 init 中,您可能希望使用 [[AVCaptureSession alloc] init]

初始化 session

注意:为了避免意外可变性的潜在问题,我建议问问自己是否可以将公开暴露的属性设置为只读,即

@property (nonatomic, strong, readonly) AVCaptureSession *session;

关于ios - 如何访问 Swift View Controller 中的私有(private) Objective-C 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49593251/

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