簡體   English   中英

ios的新功能-不確定如何使用屬性

[英]new to ios - not sure how property is being used

我已經閱讀了以下教程 ,遇到了這一行,但我不明白它是如何工作的:

NSArray *upcomingWeather = [self.weather upcomingWeather];

我試圖了解它是如何工作的,並花了很長時間。 這就是我所知道的。 futureWeather是一種提取json部分並將其返回到數組的方法。 但是,我不知道這是什么目的:self.weather <-不知道如何使用它。 您能解釋一下self.weather的意義嗎?

[self.weather upcomingWeather];

Objective-c中沒有功能,有消息。 self.weather是您向其發送upcomingWeather self.weather消息的對象。 這些消息與功能相似,但有一個很大的區別:如果對象為nil,則異常被靜音,並且在發送消息時不會出錯。

此外,在任何給定情況下,[%@%@]中的第一部分都是對象,第二部分是您要發送的消息。 如果您有多個參數,則可以將其用作:

[self.weather upcomingWeather:parameterOne andWithParameterTwo:parameterTwo];

這里要提到的重要一點是,在聲明功能時,您分為兩個部分:私有和公共。 您可以通過訪問公共部分發送消息,並在功能中使用私有部分。 為了更好地理解這一點,請看以下示例:

-(void) test:(NSString*)PO andWithParameterTwo(NSString*)PW{}

POPW是私有部分-您在方法中使用它們,而andWithParametersTwo是公共部分,並且在發送該消息時可以訪問它們。

編輯:

“等一下!”,您可能在想。 這是什么? 如果self.weather是普通的NSDictionary,它怎么知道什么是“即將到來的天氣”? 為了使顯示數據更容易,我在啟動程序項目的NSDictionary上添加了幾個幫助程序類別:NSDictionary + weather NSDictionary + weather_package這些類別添加了一些方便的方法,這些方法使訪問數據元素更加容易。 您想專注於網絡部分而不是導航NSDictionary密鑰,對嗎?

沒錯, self.weather是字典,但是此人創建了幫助者類別,因此NSDictionary使用以下方法進行了擴展:

- (NSArray *)upcomingWeather
{
    NSDictionary *dict = self[@"data"];
    return dict[@"weather"];
}

因此,當您發送upcomingWeather消息時,將調用此方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM