protocol 協議的向後隱藏

2021-07-25 13:25:01 字數 1702 閱讀 1591

看下面的** 2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

@protocol apiserviceprotocol

- (void)requestnetwithurl:(nsurl *)url param:(nsdictionary *)param;

@end

@inte***ce nsobject (apiserviceprotocol)

@end

@implementation nsobject (apiserviceprotocol)

- (void)requestnetwithurl:(nsurl *)url param:(nsdictionary *)param

@end

這段**剛開始看到 時候,發現實現該協議(方法1)和不去實現該協議直接寫成自己的方法(方法2),不一樣所有的nsobject可以訪問?

這樣想確實是,回頭再想想,如果採取方法2 是不是介面需要暴露在.h中,採用方法1介面不需要暴露在,只包含相應的protocol,做實現判斷即可,以後是誰現實的不關心。

第二部分

下面的apiserver protocol 是否多餘?

目前看是多餘的。

但考慮,如果對外還有資料統計,這時候怎麼傳送,如果apiserver 同事也實現了資料統計傳送協議,乙個物件就可以全部搞定

要不apiservicepassthrough還需要再增加乙個 實現datastatistic 協議的物件。

這塊不一定正確,只是個人的想法。

@protocol

apiserviceprotocol

<

nsobject

> -

(void

)requestnetwithurl:(

nsurl

*)url

param:(

nsdictionary

*)param;

@end

@protocol

apiservice

<

apiserviceprotocol

> //

private

functions

@end

@inte***ce

apiservicepassthrough

:nsobject

@property

(nonatomic

,strong

)nsurl

*url;

@property

(nonatomic

,strong

)nsdictionary

*param; -

(instancetype

)initwithapiservice:(

id<

apiservice

>)apiservice; -

(void

)execnetrequest;

@end

OC中的協議( protocol)

我們之前講過非正式協議 nsobject的類目 那麼肯定還有正式協議。在oc中,乙個類可以實現多個協議,通過協議可以彌補單繼承的缺陷。但是協議跟繼承不一樣,協議只是乙個方法的列表,方法的實現得靠遵循該協議的類去完成。協議 協議是一套標準,這個標準裡面宣告了很多方法,但是不關心具體這些方法是怎麼實現的...

Protocol (協議中的構造器)

import uikit class viewcontroller uiviewcontroller 用作俠客的協議,凡是俠客,都應該有一把 protocol knighterrant class disiple knighterrant 協議中的構造器方法在遵循類中被實現為指定構造器 requir...

swift 中協議的使用 protocol

協議可被類 結構體 或列舉型別採納以提供所需功能的具體實現。滿足了協議中需求的任意型別都叫做遵循了該協議。實現目標,以官方文件為背景,修改了一下,使其更簡單,建立乙個遊戲玩家和遊戲狀態跟蹤的類,將遊戲和開始和結束做為遊戲狀態。protocol gameprotocol func gamestart ...