ios - super 初始化返回零
<p><p>我有这种情况,我只是调用类的 init 我使这个类是 NSObject 的子类。 </p>
<pre><code>- (instancetype)initArray
{
self = ;
if (self) {
//Do Some Logic
}
return self;
}
</code></pre>
<p>这是我来自应用代表的电话</p>
<pre><code> CategoryLoader *categoryLoader = [initArray];
</code></pre>
<p>让我抓狂的是:</p>
<ul>
<li>虽然它返回 nil,但它进入了 if 条件</li>
<li>它不会在其他计算机上使用其他 Xcode 返回 nil </li>
</ul>
<p>请注意,两个 Xcode 都是 6.3</p>
<p>我尝试过的解决方案:</p>
<ul>
<li>清理 Xcode 的缓存</li>
<li>删除了类(class)并创建了一个新类(class)</li>
<li>重新安装 Xcode </li>
</ul>
<p>这是发生的事情的屏幕截图:</p>
<p> <img src="/image/LlUxk.png" alt="Screenshot"/> </p>
<p>有什么建议为什么它会从 NSObject 返回 nil,接下来我该怎么做?</p>
<p>谢谢</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p><code>NSObject</code> 的 <code>init</code> 实现不应该返回 <code>nil</code>。这记录在 <a href="https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/index.html#//apple_ref/occ/instm/NSObject/init" rel="noreferrer noopener nofollow">NSObject Class Reference</a> : 虽然有点困惑,但关键部分是</p>
<blockquote>
<p>The init method defined in the <code>NSObject</code> class does no initialization; it simply returns self.</p>
</blockquote>
<p>如果您观察到它重新调整 <code>nil</code>,则可能没有按照您的预期设置某些内容(可能该类不是 <code>NSObject</code> 的直接子类),或者您是以某种方式错误地解释了结果,或者在另一个级别上有问题。您在不同机器上观察到不同结果的事实表明它可能处于另一个级别,例如 Xcode、操作系统或硬件。我无能为力。尝试重新启动。</p>
<p>另外,你的方法应该命名为 <code>init</code> 而不是 <code>initArray</code>。这不是一个要求,而是一个非常强大的约定。您可以阅读 <a href="https://developer.apple.com/library/ios/documentation/General/Conceptual/CocoaEncyclopedia/Initialization/Initialization.html" rel="noreferrer noopener nofollow">Object Initialization in Apple’s <em>Concepts in Objective-C Programming</em></a> </p></p>
<p style="font-size: 20px;">关于ios -super 初始化返回零,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/29770694/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/29770694/
</a>
</p>
页:
[1]