菜鸟教程小白 发表于 2022-12-12 23:20:27

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


                                            <p><p>例如:</p>

<pre><code>// ClassA.h
#import &#34;ClassB.h&#34;
@interface ClassA : NSObject
@property (nonatomic, readonly, strong) ClassB *classB;
@end

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

// main.m
#import &#34;ClassA.h&#34;
...
ClassA *classA = ;
classA.classB.someProperty
...
</code></pre>

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

<pre><code>// main.m
classA.classB.someProperty --&gt; ok
ClassB *classB = --&gt; forbid
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>如果要通过<code>classA</code>获取<code>classB</code>的属性,则必须导入<code>ClassA</code>。</p>

<p><strong>编辑</strong></p>

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

<p><strong>演示</strong></p>

<p>我创建了 2 个 Controller 类:<code>ViewController</code> 和 <code>ViewController2</code>:</p>

<p>在 ViewController.h 中:</p>

<pre><code>#import &lt;UIKit/UIKit.h&gt;
// 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
</code></pre>

<p>在 ViewController.m 中:</p>

<pre><code>#import &#34;ViewController.h&#34;
#import &#34;ViewController2.h&#34;

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    ;

    self.vc2 = [ init];
}

@end
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何在 iOS 中访问对象(只读)的属性,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/41285278/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/41285278/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何在 iOS 中访问对象(只读)的属性