1. 程式人生 > >OC基礎 :Block(據說是重難點) 陣列高階

OC基礎 :Block(據說是重難點) 陣列高階

          OC第六講

//快捷鍵系統鍵加逗號,調背景顏色

//

#import <Foundation/Foundation.h>

//課前定義個指標求和

int sum(int x,int y){

      return x+y;}

int main(int argc,constchar * argv[]) {

@autoreleasepool {

// insert code here...

NSLog(@"Hello, World!");

//  Block(據說是重難點) 陣列高階

        /*

         Block:塊語法,本質上是匿名函式(沒有名稱的函式)

標準C裡面沒有匿名函式,在C語言後期的版本中才加入了匿名函式

         c++js,swift中也有類似語法,叫做閉包

         Block和函式指標很相似

         */

        /*

        //定義返回兩個數之和的指標,

        int (*k)(int x,int y);

        k = sum;

        NSLog(@"k = %d",k(1,1));

         */

        int mulitipier = 7;

        int (^myfirstBlock)(int) = ^int

/*這個int可以省略*/(int num/*num這個名字可以隨便給哦,但別與系統關鍵字重複就好*/){return num * mulitipier; };

        /*

         int         :    block塊的返回值型別

         (^myBlock)  :    ^block型別標示符,myfirstBlock是塊語法的名字

         (int)       :    括號內是block的引數型別可以有多個引數或者是沒有引數;沒有引數用void(其實不寫也行)

         =           :    等號右邊是定義塊物件的語法結構(相當於函式的定義),然後給

myfirstblock的返回值賦值

         ^           :    block型別的標示符

         int         :    block型別的返回值

         (int num)   :    引數列表,這個地方必須有引數名

         {}          :    block內部實現

         ;           :    不要忘記以分號結尾(大括號內也有分號)

         block型別    :    int(^)int

         block變數名  :     myfirstblock

         block     :     ^(int) (int num){return num * 7}

         ^返回值型別(引數名){函式體};其實返回值型別可以省略

         */

//block呼叫

   int a =     myfirstBlock(7);

        NSLog(@"a = %d",a);

        /*找的部落格:

         */

//無返回值無參

//        void (^myBlock)(void);

        void (^myBlock1)(void) = ^void(void){NSLog(@"這是一個無返回值無參的block");};

//呼叫。當block沒有引數的時候也需要在block變數名後面加上括號

        myBlock1();

//無返回值有參

        void (^lllBlock1)(int) = ^(int num){};

//有返回值無參

//        int (^kkkblock)(void) = ^int(void){return 1212;};

        NSInteger (^cccblock)(void) = ^NSInteger(void){return 1111;};

        NSLog(@"cccblock = %lu",cccblock());

//有返回值有參

        NSString *(^aaablock)(NSString *) = ^NSString *(NSString *str){

            NSString * resultstr =

            [str stringByAppendingString:@"hello"];

            return resultstr;

        };

        NSString *str = aaablock(@"word");

        NSLog(@"str = %@",str);

      /*

             void (^myBlock1)(void);  //無返回值,無引數

       void (^myBlock2)(NSObject, int); //有返回值,有引數

       NSString* (^myBlock3)(NSString* name, int age); //有返回值和引數,並且在引數型別後面加入了引數名(僅為可讀性)

          */

  

相關推薦

OC基礎 Block說是難點 陣列高階

          OC第六講 //快捷鍵系統鍵加逗號,調背景顏色 // #import <Foundation/Foundation.h> //課前定義個指標求和 int sum(int x,int y){       return x+y;

java基礎學習總結二十五logback詳解

為什麼使用logback logback大約有以下的一些優點: 核心重寫、測試充分、初始化記憶體載入更小,這一切讓logback效能和log4j相比有諸多倍的提升 logback非常自然地直接實現了slf4j,這個嚴格來說算不上優點,只是這樣,再理解slf4j的前提下會很容易理解

java基礎學習總結二十四slf4j作用及其實現原理

簡單回顧門面模式 slf4j是門面模式的典型應用,因此在講slf4j前,我們先簡單回顧一下門面模式, 門面模式,其核心為外部與一個子系統的通訊必須通過一個統一的外觀物件進行,使得子系統更易於使用。用一張圖來表示門面模式的結構為:   門面模式的核心為Facade即門面

java基礎學習總結二十二Cglib及其基本使用

  Cglib是什麼           Cglib是一個強大的、高效能的程式碼生成包,它廣泛被許多AOP框架使用,為他們提供方法的攔截。下圖是我網上找到的一張Cglib與一些框架和語言的關係: 對此圖總結一下:

java基礎學習總結二十一自己寫一個java.lang.reflect.Proxy代理的實現

     動態代理裡面用到了一個類就是java.lang.reflect.Proxy,這個類是根據代理內容為傳入的介面生成代理用的。本文就自己寫一個Proxy類出來,功能和java.lang.reflect.Proxy一樣,傳入介面、代理內容,生成代理。  

python基礎集合set字典direction介紹

三、字典(dict) 1.字典的建立賦值建立字典In [2]: d = {1,True,"hello"} In [3]: type(d)Out[3]: set #字典由key和value構成,一個key對應一個value,key-value , 鍵值對In [4]: d = {1:"freya",2:"

Lua菜鳥教程學習筆記三難點

內容會持續更新,有錯誤的地方歡迎指正,謝謝! 上一篇文章:Lua菜鳥教程學習筆記二(一些細節)介紹了Lua的一些細節內容,但缺少重難點內容,本文總結一些重難點。 Lua 模組與包 定義模組 模組類似於一個封裝庫,從 Lua 5.1 開始,Lua 加入了標準的模組管理機制,

印表機顯示印表機定向2

刪除裝置報:拒絕訪問,無法刪除裝置 查詢資料是在遠端連線中,勾選了共享印表機的原因。這樣在遠端連線時去掉印表機的勾就行了,但這樣每次都手動的點有些不好,設定成預設不共享才好用。 在WIN7中,執行gpedit,找到計算機配置-》管理模版-》windows元件-》遠端桌面服務

python 基礎函式

一. 知識倉庫 預設引數的陷阱:如果預設引數的值是一個可變資料型別,那麼每次呼叫的時候不傳值,就公用這個資料型別的資源 函式的名稱空間 1、內建名稱空間: - python直譯器一啟動就將可以使用的名字儲存在內建名稱空間中,內建的名字(如print、input

【JAVA】基礎網路TCP/IP/UDP/HTTPURL、Socket

IP地址: IP地址是我們電腦在網路中的唯一標記, 所有的電腦之間進行資訊互動都是利用這個IP地址來進行識別。 埠號: ip地址唯一標示了通訊實體,但是一個通訊實體可以有多個通訊程式同時提供網路服務。這個時候就要通過埠來區分開具體的通訊程式。一個通訊實體上不能有兩個通訊程式使用同一個埠號

Redis支持的五種數類型及相應操作String字符串,Hash哈希,List列表,Set集合及zset(sorted set有序集合)

list 支持 哈希 keys 當前 zset 存在 key-value second key 命令(key命令:用於管理 redis 的key)相應操作: key 命令 說明 del key [key...] dump key 序列化給定 key

計算機核心參考書籍鳥哥的Linux私房菜--基礎學習篇第三版

1.作用 本質上是一組程式,可以執行不同的功能; 不同的作業系統具有不同的核心,如Linux\windows\Mac 管控硬體、提供合理的計算機系統資源分配,如CPU資源、記憶體使用資源,提供相關的功能。 2.功能 1.系統呼叫介面 2.程式管理 3.記憶

Android 繪圖基礎Path繪製三角形、貝塞爾曲線、正餘弦

學習重點: 理解path的使用 理解貝塞爾曲線的繪製原理 可動正餘弦的繪製 Path的簡單介紹   在 Android 繪圖基礎:Canvas畫布——自定義View(繪製錶盤、矩形、圓形、弧、漸變) 中我們可以看到Canvas的強大功能,其實Canva

大資料生態系統基礎 HBASEHBASE 介紹及安裝、配置

一、介紹        Apache HBase是Hadoop資料庫,一個分散式的、可伸縮的大型資料儲存。        當您需要隨機的、實時的讀/寫訪問您的大資料時,請使用Apache HBase。這個專案的目標是承載非常大的表——數十億行X百萬列的列——執行在在商用硬體

Android 繪圖基礎Bitmap點陣圖與Matrix矩陣實現圖片5種操作平移、旋轉、錯切、縮放、對稱

Android的Matrix利用數學原理實現圖片平移、旋轉等操作詳解   很慶幸自己的線性代數學的還可以,理解Matrix的矩陣變換完全沒有問題。Matrix矩陣實現圖片的平移旋轉等操作涉及到線性代數問題,感興趣它的具體實現的話可以參考一下上面的部落格,非常詳

黑馬程式設計師——OC基礎——記憶體管理

一,為什麼要進行記憶體管理 1,由於移動裝置的記憶體有限,所以每個APP所佔的記憶體也是有限制的,當APP所佔用的記憶體較多時,系統就會發出警告,這時就需要回收一些不需要繼續使用的記憶體空間,比如回收一些不再使用的物件和變數等。 任何繼承NSObject的物件,對其他的基

Vue.js-09第九章 - 組件基礎再探data、props

圖片 .cn 一個點 通過 避免 成對 keep title 開始 一、前言   在上一章的學習中,我們學習了 Vue 中組件的基礎知識,知道了什麽是組件,以及如何創建一個全局/局部組件。不知道你是否記得,在上一章中,我們提到組件是一個可以復用的 Vue 實例,它與 V

javascript基礎知識整理不定時更新

nsh firefox 可用 splice mage true size -1 對數 1.js中真與假的定義:   真:true,非零數字,非空字符串,非空對象   假:false,數字零,空字符串,空對象(null),undefined 2.使用for循環對json進

《鳥哥的Linux私房菜-基礎學習篇第三版

shell 怎樣學習 track col 網絡基礎 環境的使用 發生 企業網 clas 第2章 Linxu怎樣學習 1. Linux當前的應用角色 當前的Linux常見的應用可略分為企業應用和個人應用雙方面。 首先談了企業

基礎郵件原理MUA,MTA,MDA

pop3 客戶端 fill 客戶 觀察 工作 目的 重復 包括 電子郵件基本概念: MUA(Mail User Agent)接收郵件所使用的郵件客戶端,使用IMAP或POP3協議與服務器通信; MTA(Mail Transfer Agent) 通過SMTP協