控制器傳值

1、屬性傳值

2、回傳值:

1.委托代理

<1>把發(fā)送數(shù)據(jù)的類做出委托類:聲明協(xié)議,在協(xié)議中聲明一些方法給委托類定義一個id類型,名稱為delegate的屬性,并采用協(xié)議在委托類的對應方法中,讓代理對象調(diào)用協(xié)議中某個方法。

<2>把接受數(shù)據(jù)的類做成代理類:實例化委托類對象,設(shè)置委托類對象的代理對象為自身,采用協(xié)議,并定義協(xié)議中的方法。

<3>一對一關(guān)系!

2.通知
<1>接收數(shù)據(jù)的類做注冊通知,并設(shè)置通知回調(diào)方法
<2>發(fā)送數(shù)據(jù)的類中 ,做發(fā)送通知的操作
<3>通知是通過一個字符串名稱來確定關(guān)聯(lián)
<4>使用時一定要注意:
》注冊通知的代碼必須先于發(fā)送通知的代碼執(zhí)行
》通知的名稱必須相同!
》一對多關(guān)系!

3.Block
<1>可以截獲局部變量的匿名函數(shù)叫做Block,也叫做塊函數(shù)
<2>是IOS4.0之后引入的,作為C語言的擴展,因為C語言不支持函數(shù)匿名,C中必須有函數(shù)名稱才可以調(diào)用
<3>語法--聲明、定義、調(diào)用--略
<4>與C語言的區(qū)別
》與C函數(shù)不可以嵌套定義C函數(shù),但是可以在C函數(shù)、OC方法、Block函數(shù)內(nèi)嵌套定義Block函數(shù)
》對于返回值,形參完全相同的Block函數(shù),可以使用函數(shù)名賦值

//-------C函數(shù)聲明---------
//無參數(shù)無返回值函數(shù)
void showMyCountry(void);
//無參數(shù)有返回值的函數(shù)
double getPI(void);
//有參數(shù)無返回值
void showArguments(int a,double b,char c);
//有參數(shù)有返回值
int getSum(int a,int b,int c);

//-------C函數(shù)定義,實現(xiàn)---------
//無參數(shù)無返回值函數(shù)
void showMyCountry(void){
    printf("C:中國\n");
    
}
//無參數(shù)有返回值的函數(shù)
double getPI(void){
    return 3.14;
    
}
//有參數(shù)無返回值
void showArguments(int a,double b,char c){
    printf("c>x=%d,y=%1f,z=%c\n",a,b,c);
}
//有參數(shù)有返回值
int getSum(int a,int b,int c){
    return a+b+c;
}
//----------Block函數(shù)聲明-----------
void (^showMyCountry_Block)(void);

double (^getPI_Block)(void);

void (^showArguments_Block)(int a,double b,char c);

int (^getSum_Block)(int a,int b,int c);

//----------Block函數(shù)定義-----------

void (^showMyCountry_Block)(void)  = ^(void){
    
};

double (^getPI_Block)(void) = ^(void){
    return 3.2;
    
};

void (^showArguments_Block)(int a,double b,char c) = ^(int a,double b,char c){
  
    printf("Block > a = %d, b = %1f, c = %c\n",a,b,c);
};

int (^getSum_Block)(int a,int b,int c) = ^(int a,int b,int c){
    return a+b+c;
    
};
int main(int argc, char * argv[]) {
    @autoreleasepool {
        //----------C函數(shù)調(diào)用-----------
        showMyCountry();
        printf("pi = %1f\n",getPI());
        double pi = getPI();
        
        showArguments(100,5.5,'x');
        int sum = getSum(10, 20, 30);
        printf("10+20+30= %d\n",sum);
        
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,689評論 1 32
  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時...
    歐辰_OSR閱讀 30,286評論 8 265
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,711評論 19 139
  • 感覺工作雖然不錯,但是很難在這個領(lǐng)域有大發(fā)展了。一個人的力量畢竟有限,現(xiàn)在公司的前景迷茫。一周下來,最近兩天才充實...
    小王加油啊閱讀 240評論 0 0
  • 叔本華有一個非常重要的觀點,就是在他那個意識與表象的世界當中有個非常重要的觀點,他說人其實就是在痛苦和彷徨之間如同...
    dan07閱讀 681評論 0 0

友情鏈接更多精彩內(nèi)容