1.nonatomic

2.assign

3.strong

4.weak

5.instancetype

6.@class @property

使部分类在编译时不使用ARC

-(可以让这们支持 retain release retainCount)

项目文件 - Build Phases - 找到.m文件双击 -加入Flags   --->>  -fno-objc-arc

让项目中的指定文件支持ARC 使用 -f-objc-arc    (-f的意思是Flags)

将非ARC的项目转换为 ARC

Edit - Convert - To Objcetive-C ARC

ARC-处理循环引用

使用 weak 弱指针   一个用strong指针 一个用weak指针

Block (和函数类似-保存一段代码)

函数是在编译前就要将代码写好

void test()
{
NSLog(@“—————");
}

block是在程序运行时保存一段代码  指针的标识符是 *   block的标识符是 ^ 也可以有型参 和 返回值

//定义了一个没有返回值 ,没有形参的 名为 myblock的 block 变量 block也是数据类型

void (^myblock)() = ^{
NSLog(@“———“);
NSLog(@“———“);
}; // 注意分号 // 利用block变量调用block内部的代码
my block(); // 调用方式与函数一样 带返回值和形参的 block 接收两个参数 返回两个参数的和 int (^sumblock)(int , int ) = ^(int a, int b){
return a+b;
}; int c = sumblock(,);
void test3()
{
int a = ;
__block int b = ; void (^block)(); block = ^{
// block内部可以访问外面的变量
//NSLog(@"a = %d", a); // 默认情况下,block内部不能修改外面的局部变量
// a = 20; // 给局部变量加上__block关键字,这个局部变量就可以在block内部修改
b = ;
}; block();
}

Block 使用 typedef

typedef int(^MyBlock)(int,int);

#import <Foundation/Foundation.h>
#import "Person.h" int main(int argc, const char * argv[])
{
MyBlock sumBlock = ^(int a,int b)
{
return a+b;
};
int s = sumBlock(,); NSLog(@"sum = %d",s);
return ;
}

Xcode-01ARC / Block的更多相关文章

  1. xcode arc 下使用 block警告 Capturing [an object] strongly in this block is likely to lead to a retain cycle” in ARC-enabled code

    xcode arc 下使用 block警告 Capturing [an object] strongly in this block is likely to lead to a retain cyc ...

  2. Objective-C中block的底层原理

    先出2个考题: 1. 上面打印的是几,captureNum2 出去作用域后是否被销毁?为什么? 同样类型的题目: 问:打印的数字为多少? 有人会回答:mutArray是captureObject方法的 ...

  3. Xcode 快速开发 代码块

    Xcode的代码片段(Code Snippets)创建自定义的代码片段,当你重用这些代码片段时,会给你带来很大的方便. 常用的: 1.strong:@property (nonatomic,stron ...

  4. duplicate symbols for architecture arm64 after xCode 8.0 update

    Xcode IDE  从7.3.1 update 到 8.0 之后出现的问题 一个错误把我困扰了两天之久,最终找到解决办法我欣喜若狂. 错误发生原因:Xcode IDE  从7.3.1 update ...

  5. iOS-重回block小白之路

    在我刚刚接触iOS开发的时候,是通过MJ老师讲的OC基础入门的,iOS圈的人应该基本都知道MJ大神吧,即便如此大神,讲解完block之后我依然感觉晕晕乎乎的,直到后来真正进公司做项目,依然感觉这是自己 ...

  6. Block产生的内存泄露,以及解决方法

    前言: 在ARC(自动引用技术)前,Objective-c都是手动来分配释放 释放 计数内存,其过程非常复杂. ARC技术推出后,貌似世界和平了很多,但是其实ARC并不等同于Java或者C#中的垃圾回 ...

  7. iOS深入学习(Block全面分析)

    本文翻译自苹果的文档,有删减,也有添加自己的理解部分. 如果有Block语法不懂的,可以参考fuckingblocksyntax,里面对于Block 为了方便对比,下面的代码我假设是写在ViewCon ...

  8. 超详细的Xcode代码格式化教程,可自定义样式

    为什么要格式化代码 当团队内有多人开发的时候,每个人写的代码格式都有自己的喜好,也可能会忙着写代码而忽略了格式的问题. 在之前,我们可能会写完代码后,再一点一点去调格式,很浪费时间. 有了ClangF ...

  9. 设置一个顺手的Xcode

    授权转载,作者:吴白(微博) 手指在键盘上飞速跳跃,终端上的代码也随着飞舞,是的这确实很酷.优秀的程序员总是这么一群人,他们不拘于现状,不固步自封,他们喜欢新奇的事,他们把自己发挥到极致. 指法攻略 ...

  10. iOS XCode启用/关闭Clang Warnings

    前言:warnings是编码中很重要的一个环节,编译器给出合理的warning能帮助开发者找到自己代码的问题,防止很多bug产生.  默认用XCode创建一个工程,会自动开启一些重要的warnings ...

随机推荐

  1. iOS新建项目基本配置

    项目整体同xib+代码的方式 1.调整项目文件结构 2.将资源图片导入工程 General->LaunchScreen 修改 3.App名称修改 info->Bundle name 4.删 ...

  2. 有n个台阶,如果一次只能上1个或2个台阶,求一共有多少种上法

    // n级台阶,求多少种跳法.cpp : Defines the entry point for the console application. // /* 思路: 如果只有一级台阶,n=1,很明显 ...

  3. [TypeScript] Installing TypeScript and Running the TypeScript Compiler (tsc)

    This lesson shows you how to install TypeScript and run the TypeScript compiler against a .ts file f ...

  4. 以非root权限安装nginx及运行

    本章主要讲如何在无root权限(包含无sudo权限)条件下于centos命令行中安装nginx以及在大于1024的端口(这里用8080)上运行. 1. 安装 两种方式,一是下载预编译好的rpm包安装, ...

  5. VS中新建网站和新建项目web应用程序的区别?(实际应用总结一点)

    1,在网站中是没有命名空间namespace这个概念的.例如公共类只有放在App_Code里(不但是公共类,所有的类都应放在这里),其他的类或者页面才可以引用.有using这个概念,但没有namesp ...

  6. build/core/config.mk

    # 如果定义了ANDROID_BUILD_SHELL,则ANDROID_BUILD_SHELL # 否则使用默认的/bin/bash ifdef ANDROID_BUILD_SHELL SHELL : ...

  7. SharePoint Attachement操作代码

    下载文件 如果下载其它类别的文件:  SPSecurity.RunWithElevatedPrivileges(].ToString();                            swi ...

  8. java 反射,注解,泛型,内省(高级知识点)

     Java反射 1.Java反射是Java被视为动态(或准动态)语言的一个关键性质.这个机制允许程序在运行时透过Reflection APIs    取得任何一个已知名称的class的内部信息, 包括 ...

  9. Oracle常用几种Sql用法

    前几天客户提出一个月报,经过了解需求及公式等过程长达20小时,总算基本模型出来了,贴出来啥晒,对于我这种菜鸟来说也算小有提高,虽然Sql语句不是很庞大,但是里面涉及到了几种算法,个人觉得还是经常能用到 ...

  10. jq版本更新后无live函数的处理.

    之前你的代码如果是$("#ele").live("click", function() {    //...});现在要写成$("#ele" ...