菜鸟教程小白 发表于 2022-12-13 10:25:33

ios - 在 Objective C 中找不到方法


                                            <p><p>我正在尝试在 ObjectiveC 中创建一个全局函数或方法。这样我就可以从我的任何 ViewController 中调用它。</p>

<p>我已经查看了这篇文章:<a href="https://stackoverflow.com/questions/7294176/how-to-create-global-functions-in-objective-c" rel="noreferrer noopener nofollow">How to create global functions in Objective-C</a> </p>

<p>所以我在 Xcode 6 中创建了新文件并选择了一个类别下拉列表。为我创建了这两个 *.h 和 *.m 文件。我在其中添加了名为 SaveWeatherDataNow 的方法</p>

<pre><code>//NSObject+SaveWeatherData.h
#import &lt;Foundation/Foundation.h&gt;

@interface NSObject (SaveWeatherData)

+(void)SaveWeatherDataNow:(NSString *)XML;

@end

//NSObject+SaveWeatherData.m
#import &#34;NSObject+SaveWeatherData.h&#34;

@implementation NSObject (SaveWeatherData)

+(void)SaveWeatherDataNow:(NSString *)XML
{

    NSLog(@&#34;SaveWeatherDataNow XML lenght: %ld&#34;, );
}

@end
</code></pre>

<p>现在在我的另一个 ViewController 中,如果我调用此方法,那么编译器根本找不到它。我错过了什么?</p>

<pre><code>//v1CitiesAdd.m
#import &#34;NSObject+SaveWeatherData.h&#34;

@implementation v1CitiesAdd
...
...
-(IBAction) doneAction
{

...
; // Complier Error: Use of undeclared identifier SaveWeatherData
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>把<code>+</code>改成<code>-</code>(在<code>(void)</code>前面):</p>

<pre><code>-(void)SaveWeatherDataNow:(NSString *)XML;
</code></pre>

<p>这样,您可以在 SaveWeatherData 对象中引用该方法。</p>

<p>不要忘记在头文件 (.h) 和类 (.m) 文件中更改它。</p>

<p>你也可以打电话</p>

<p>;</p>

<p>留下+号。</p>

<p>===</p>

<p>当你使用 + 时,它是一个类方法。它在全局范围内工作,不知道也不关心单个对象。</p>

<p>当你使用 - 时,它是一个对象方法。它适用于特定对象。</p>

<p>所以,如果有一个 Brick 类,</p>

<p>+(void) 粉碎;</p>

<p>会改变/更新每一 block 要砸的砖。</p>

<p>-(void) 粉碎;</p>

<p>会打碎您发送该消息的特定砖 block 。</p>

<p>;只会打碎一 block 砖。</p>

<p>[碎砖];会改变所有砖 block 的全局性。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在 Objective C 中找不到方法,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/28859306/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/28859306/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在 Objective C 中找不到方法