一、属性
     1、属性的声明:在.h文件中使用@property声明属性。
          @property NSString *name;
      2、属性的作用是生成setter以及getter方法的实现,如果方法内部操作的实例变量未定义,系统会自动生成一个_属性名的实例变量,但是生成的实例变量的可见度是私有的,子类不可访问。 
     3、一旦同时重写了setter、getter方法,并且没有实现@synthesizer,@synthesizer就不再生成实例变量。
二、属性的特性
     1、属性的特性:为属性提供了一些关键字用以控制setter、getter的实现细节,这些关键字称为属性的特性(attribute);
     2、读写性
          1)readonly:只读状态,是告诉编译器,属性只生成getter方法,不生成setter方法;
          2)readwrite:读写状态,是告诉编译器,属性既生成setter方法又生成getter方法,既有设置器,也有访问器,默认的读写特性;
          3)setter=:指定属性生成的setter方法的名字;
          4)getter=:指定属性生成的getter方法的名字。
               @property (readwrite, setter=setname:, getter = getname) NSString *name;
     3、原子性
          1)atomic:原子特性,setter、getter方法在多线程访问下是绝对安全的,即setter、getter内部做了多线程访问处理。默认的原子特性。
          2)nonatomic:非原子特性,settler、getter方法内部不会做多线程访问处理,仅仅是普通的setter、getter方法。
          3)程序开发过程中,setter、getter会频繁使⽤,如果使⽤atomic需要 不断的对setter、getter加锁解锁以保证线程访问的安全,会⾮常占⽤系统资源,降低系统性能。声明属性时,通常使用nonatomic。
               @property (nonatomic) NSString *name;
     4、语义特性
          1)如果属性是非对象类型(比如int、float等)属性的语义设置使用assgin;
          2)如果属性是对象类型(比如NSString等)并且要保留这个对象的时候,属性的语义设置使用retain;
          3)如果属性是对象类型并且想要得到对象的副本,使用copy。    
三、点语法
     1、只要符合系统默认setter、getter书写格式的方法都可以使用点语法,
属性是一对getter、setter方法,点语法是属性的另一种调用格式。
          setter方法:
          [person setName:@“Lily”];
          使用点语法:
          person.name = @“Lily”;
          getter方法:
          NSString *string = [person name];
          使用点语法
          NSString *string = person.name;
     2、类之间的循环引入问题 (#import 与 @class的区别)
          #import “Woman.h”循环引入的问题;
          #import “”引入类的接口部分,容易造成循环引入;
          @class只会告诉编译器后面的字符是一个类名。并不会引入类的接口部分。使用@class声明类后,要使用类中方法,需要在.m文件引入。

 
代码块本质上是和其他变量类似。不同的是,代码块存储的数据是一个函数体。使用代码块是,你可以像调用其他标准函数一样,传入参数数,并得到返回值。
脱字符(^)是块的语法标记。按照我们熟悉的参数语法规约所定义的返回值以及块的主体(也就是可以执行的代码)。下图是如何把块变量赋值给一个变量的语法讲解:

按照调用函数的方式调用块对象变量就可以了:
int result = myBlock(4); // result是 28

具体更多关于块(block)点击
五:
    className* object = [className new];
or
    className* object = [[className alloc] init];
 背景说明,new是较为老式的写法,后来发现只有一个new不好使,才引入了alloc和init这种写法,保留new一是向后兼容,二是很多时候是一种更简单的写法。其实是一样的,new在内部调用的alloc和init.
例如:
    1. MyVeiw * view = [[MyVeiw alloc] init];
    2. view.Visible = YES;
    3. view.Visible = NO;

iOS学习之Object-C语言属性和点语法(转载收集)的更多相关文章

  1. iOS学习08之C语言内存管理

    本次主要学习和理解C语言中的内存管理 1.存储区划分 按照地址从高到低的顺序:栈区,堆区,静态区,常量区,代码区 1> 栈区:局部变量的存储区域 局部变量基本都在函数.循环.分支中定义 栈区的内 ...

  2. iOS学习07之C语言指针

    本次随笔主要是为了学习和理解C语言中的指针,指针树状图如下: 1.访问数据的两种方式 1> 直接访问:定义变量后,直接访问变量 ; printf("a = %d\n", a) ...

  3. iOS学习之Object-C语言属性和点语法

    一.属性      1.属性的声明:在.h文件中使用@property声明属性.           @property NSString *name;       2.属性的作用是生成setter以 ...

  4. ios 学习笔记之控件属性

    1.文本框 设置密码属性:Secure Text Entry 勾选; 设置文本框带清除属性: Clear Button =Is always visible;  默认是不带清除属性:Never app ...

  5. 【IOS学习】【Swift语言】

    基本语法: OS X playground 引入 import Cocoa IOS playground 引入 import UIKit 基本数据类型 let 定义常量 定义完成之后无法修改 var ...

  6. ios学习之旅---c语言函数

    1.函数的概述 C源程序是由函数组成的. 尽管在前面各章的程序中大都仅仅有一个主函数main(),但有用程序往往由多个 函数组成. 函数是C源程序的基本模块,通过对函数模块的调用实现特定的功能. C语 ...

  7. 李洪强iOS开发之零基础学习iOS开发】【02-C语言】01-概述

    前面已经给大家介绍了iOS开发相关的一些基础知识,其实iOS开发就是开发iPhone\iPad上的软件,而要想开发一款软件,首先要学习程序设计语言.iOS开发需要学习的主要程序设计语言有:C语言.C+ ...

  8. IOS学习笔记07---C语言函数-printf函数

    IOS学习笔记07---C语言函数-printf函数 0 7.C语言5-printf函数 ------------------------- ----------------------------- ...

  9. IOS学习笔记06---C语言函数

    IOS学习笔记06---C语言函数 --------------------------------------------  qq交流群:创梦技术交流群:251572072              ...

随机推荐

  1. 开源一个CSV解析器(附设计过程 )

    在ExcelReport支持csv的开发过程中,需要一个NETStandard的csv解析器.在nuget上找了几个试用,但都不太适合. 于是,便有了:AxinLib.IO.CSV. 先看看怎么用: ...

  2. 华为AR配置内部服务器示例(只有1个公网IP)

    AR配置公网和私网用户都可以通过公网地址访问内部服务器示例(只有1个公网IP) 适用于:V200R003C01及以后的系统软件版本. 组网需求: 由于只有1个公网IP(100.100.1.2),想实现 ...

  3. shell 十进制数字转十六进制字符串并将结果保存到变量

    . . . . . 今天写测试脚本的时候需要将生成的十六进制值作为参数传递给某个命令,而循环生成的数值都是十进制的.在网上查了好久也没有找到如何将一个变量中的值进行进制转换,并保存到变量中,网上的办法 ...

  4. macos下golang 1.9配置

    1.golang最新版本下载地址 https://golang.org/dl/ (下载与安装过程此处省略一万字) 注意,go1.9与以往版本安装不同,直接安装到/usr/local/go目录下,而/u ...

  5. Caffe 分类问题 Check failed: error == cudaSuccess (2 vs. 0) out of memory

    如果图片过大,需要适当缩小batch_size的值,否则使用GPU时可能超出其缓存大小而报错

  6. Android中使用BufferedReader.readline阻塞读取不到数据,但是ready返回true

    通过socket测试工具在电脑上发送消息,Android真机可以收到响应BufferedReader.ready()返回true,但是readline却一直阻塞. 原因:readline()只有在遇到 ...

  7. JavaScript异步并发请求问题

    JavaScript异步并发请求问题 JS中如何处理多个ajax并发请求? jQuery的deferred对象详解 面试遇到的ajax请求串行和并行问题

  8. 理解和解决Java并发修改异常ConcurrentModificationException(转载)

    原文地址:https://www.jianshu.com/p/f3f6b12330c1 理解和解决Java并发修改异常ConcurrentModificationException 不知读者在Java ...

  9. eclipse的debug模式下启动不了tomcat

    使用eclipse启动tomcat,正常模式下可以启动tomcat,却在debug模式下无法启动tomcat. 这个问题可能是由于eclipse和tomcat的交互而产生的,在以debug模式启动to ...

  10. 自定义GridView实现分割线解析

    前两天在些项目的时候碰到常用的GridView要实现一些分割线,之前就是用本方法利用listView和Item的背景颜色的不同线显示分割线.这是最low的一种做法.于是我就简单的写了一个自定义的 Gr ...