菜鸟教程小白 发表于 2022-12-12 10:47:43

ios - Objective-C中尖括号的含义?


                                            <p><p>尽管问题很广泛,但我实际上对我最近在使用 <a href="https://realm.io/" rel="noreferrer noopener nofollow">Realm library</a> 时播种的一个案例感到好奇。 .正如我之前在很多场合使用协议(protocol)(委托(delegate))并且还使用 <> 导入的类。现在这是我不完全理解或根本不理解的代码行:</p>

<pre><code>@property (nonatomic, strong) RLMArray &lt;ExerciseLog *&gt;&lt;ExerciseLog&gt; * exerciseLogs;
</code></pre>

<p>我想 <code><ExerciseLog> * exerciseLogs</code> 行的第二部分是用来确保exerciseLogs 可以是任何符合ExerciseLog 协议(protocol)的ExerciseLog 的实例,我的假设是否正确?</p>

<p>或者简单地说,如果用户发送的对象与预期的对象不同,则应用不会崩溃,并且会分配一个默认值。 </p>

<p>我猜这部分是某种安全转换,以便返回的对象确认到练习日志。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>Obj-C 协议(protocol)一致性和泛型的组合。 <a href="https://realm.io/docs/objc/latest/api/Classes/RLMArray.html" rel="noreferrer noopener nofollow">RLMArray</a>被声明为</p>
<pre><code>@interface RLMArray &lt; RLMObjectType : RLMObject * &gt;: NSObject&lt;RLMCollection,NSFastEnumeration&gt;
</code></pre>
<p>它有一个通用参数。这就是 <code><ExerciseLog *></code>。</p>
<p>第二部分<code><ExerciseLog></code>是对给定类型协议(protocol)的一致性。</p>
<p>顺便说一句,该协议(protocol)是使用 <code>RLM_ARRAY_TYPE</code> 宏声明的。代码似乎有点复杂,但它可能是一种为数组强制执行元素类型的旧方法(<code>RLMArray<protocolX></code> 不能分配给 <code>RLMArray<protocolY></code>)。 </p>
<p>引用文档:</p>
<blockquote>
<p>Unlike an NSArray, RLMArrays hold a single type, specified by the objectClassName property. This is referred to in these docs as the “type” of the array.</p>
<p>When declaring an RLMArray property, the type must be marked as conforming to a protocol by the same name as the objects it should contain (see the RLM_ARRAY_TYPE macro). RLMArray properties can also use Objective-C generics if available. For example:</p>
</blockquote></p>
                                   
                                                <p style="font-size: 20px;">关于ios - Objective-C中尖括号的含义?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/35851086/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/35851086/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - Objective-C中尖括号的含义?