• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 如何在 iOS 中访问对象(只读)的属性

[复制链接]
菜鸟教程小白 发表于 2022-12-12 23:20:27 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

例如:

// ClassA.h
#import "ClassB.h"
@interface ClassA : NSObject
@property (nonatomic, readonly, strong) ClassB *classB;
@end

// ClassB.h
@interface ClassB : NSObject
@property (assign) CGFloat someProperty;
@end

// main.m
#import "ClassA.h"
...
ClassA *classA = [ClassA new];
classA.classB.someProperty
...

我想像main.m中的classA.classB.someProperty一样访问someProperty,所以我必须导入ClassB。 hClassA 头文件中。但是我只想在main.m中访问ClassB的属性或方法,我想禁止用户在main.m中创建ClassB对象. 我该怎么办?

// main.m
classA.classB.someProperty --> ok
ClassB *classB = [ClassB new] --> forbid



Best Answer-推荐答案


如果要通过classA获取classB的属性,则必须导入ClassA

编辑

如果你不想在main.m中创建classB,你应该在你的classA.m中导入ClassB。 h 不在 classA.h 中。

演示

我创建了 2 个 Controller 类:ViewControllerViewController2:

在 ViewController.h 中:

#import <UIKit/UIKit.h>
// Forward declare ViewController2, instead of importing it.
// This way it will be visible for your header file, but will get error if trying to create a instance of it
@class ViewController2;

@interface ViewController : UIViewController

@property (nonatomic, strong, readwrite) ViewController2 *vc2;

@end

在 ViewController.m 中:

#import "ViewController.h"
#import "ViewController2.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.vc2 = [[ViewController2 alloc] init];
}

@end

关于ios - 如何在 iOS 中访问对象(只读)的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41285278/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap