ios - iOS 中的 -(CGRect *)frame 方法是什么?
<p><ol>
<li><p>代码:</p>
<pre><code>if (!CGRectContainsPoint([frame], CGPointMake(newX, newY)) )
{
....
}
</code></pre> </li>
<li>问题</li>
</ol>
<p>我想在 View 数组中获取 UIView 的“帧”值,所以我使用了这个:</p>
<pre><code> ((UIView *)).frame
</code></pre>
<p>我利用 (UIView *) 强制将 id 对象转换为 UIView,否则会触发错误,例如“在 'id' 类型的对象上找不到属性 'frame'”。但是下面的方法似乎成功地摆脱了这个错误:</p>
<pre><code>[ frame]
</code></pre>
<p>那么可以自动检测id的真实类型,然后让它调用方法吗?
我真的很想知道像这样的方法
----id的真实类型是UIView
----id的真实类型是UIViewController</p>
<p>这些方法是getter 方法还是setter 方法?我无法分辨差异,而苹果文档显示它们如下:</p>
<pre><code> @property(nonatomic) CGRect frame
</code></pre>
<p>非常感谢您的帮助!</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>最后调用的方法是<code>-(CGRect)frame;</code>。使用点语法只是 Objective-c 编译器提供的语法糖。为了让这个糖起作用,编译器需要知道它使用的对象的类型。</p>
<p>另一方面,objective-c 使用消息传递来调用方法。这意味着当您使用语法 <code></code> 时,它将尝试在 <code>id</code> 上执行选择器 <code>@selector(message)</code>。 <code>id</code> 是一种特殊类型,表示运行时中的任何对象,它接受每个选择器,如果对象无法执行,它将在运行时抛出一个未知的选择器异常。</p></p>
<p style="font-size: 20px;">关于ios - iOS 中的 -(CGRect *)frame 方法是什么?,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/31539589/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/31539589/
</a>
</p>
页:
[1]