iphone - 使用延迟创建一个返回的方法
<p><p>在 xcode 上工作时,我意识到如果我创建一个非 void 方法,我从一个类/方法调用它,那么只有当操作是即时的时,结果才会得到最佳处理。我试图通过插入延迟来进行测试,但我意识到它不再有效。
我将在这里写下我创建的示例:</p>
<p><strong>A 类</strong></p>
<pre><code>//--------------------CLASS A
- (void)viewDidLoad {
;
i = 0;
Class *classB = [ init];
i = ;
;
}
-(void)method3 {
NSLog(@"i = %i",i); // i = 0
}
</code></pre>
<p><strong>B 类</strong></p>
<pre><code>//--------------------CLASS B
-(int)method1 {
;
return a;
}
-(void)method2 {
a = 800;
}
</code></pre>
<p>显然我的问题不是那么微不足道,但我试图尽可能彻底地得到答案,有人建议我使用模态方法,但我认为这不是我正在寻找的解决方案。</p>
<p>我能做些什么来解决这个问题?!</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>您真正需要的是更好地理解异步方法。在你的 <code>method1</code> 中,变量 <code>a</code> 永远不会改变——你所做的只是安排 <code>method2</code> 在未来被调用,然后返回变量 <code>a</code> 的当前状态。</p>
<p>在 Objective-C 中,有几种不同的方法可以解决这个问题。人们最常使用 <code>protocols</code> 和 <code>delegates</code> 来解决这个问题。这是一个基本的<a href="http://mobiledevelopertips.com/objective-c/the-basics-of-protocols-and-delegates.html" rel="noreferrer noopener nofollow">intro to protocols and delegates</a> .基本上,您会希望您的 A 类对象成为 B 类对象的委托(delegate)。您也可以使用 <a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/nsnotification_Class/Reference/Reference.html" rel="noreferrer noopener nofollow">NSNotifications</a>或 <a href="http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Blocks/Articles/00_Introduction.html" rel="noreferrer noopener nofollow">blocks</a> ,尽管在继续讨论通知和 block 之前,您可能应该了解协议(protocol)和委托(delegate)的用法(它们在 Objective-C 中非常重要)。</p></p>
<p style="font-size: 20px;">关于iphone - 使用延迟创建一个返回的方法,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/10767538/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/10767538/
</a>
</p>
页:
[1]