Objective-C基础知识

1.标示符:字母、下划线、美元符号和数字组成,字母和下划线美元符号开头,区分大小写 2.代码区存放代码,数据区存放静态变量和字符串常量,栈存放局部变量,堆存放alloc的对象 3.局部变量:方法和语句块中的声明变量;实例变量:方法之外类内部定义的变量。区别:局部变量可以进行初始化初始值而实例变量不能进行初始化 实例变量例子: @interface Person : NSObject { int age; int sex; } @end 4.数据类型 4.1基本数据类型 数值型,整型,浮点型 字符型 布尔型 空类型 4.2指针数据类型 类 id 5.数据类型格式说明符 int %d, %i short int %hd,%hi long int $ld,%li unsigned int %u unsigned short %hu unsigned long %lu float %f double %f long double %lf char %c byte 1个字节 -128~127 short 2个字节 int 4个字节 long 8个字节 float 4个字节 float a = 23.2f oc中字符使用unicode编码,每个字符占用两个字节 id类型是ob中独有的数据类型,格式化使用%p 6.数据类型转换 容量小的默认转换为容量大的 byte,short,char—>int—>long–>float–>double 7.运算符 b = a++,b=++a; 第一个是先赋值后运算,第二个是先计算后赋值 8.代码规范 8.1大括号要对齐 8.2遇到{要使用tab缩进 8.3方法和程序块之间加换行 8.4运算符两侧加上空格 8.5{前面要又空格 8.6{}成对出现 9.类之间关系 A是B那么可以理解为继承关系: 关联关系: 聚合关系: 10.多态 多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果 11.面向对象的核心:万事万物皆对象,可以看成静态属性(实例变量)和动态属性(方法)的结合体 12.类使用 @interface NewClassName:ParentClassName { 实例变量 }

方法声明 @end

@implementation NewClassName 方法的实现 {

} @end

13.方法声明 -(void) method: (int) arguments: 方法类型 返回类型 方法名 参数类型 参数名 +是类方法,-表示实例方法 传递参数时候要遵循传递原则,基本的都要该数据本身,指针类型传递的是对象的指针 14.方法调用或者发送消息 [类名或者对象名 方法名] 或者使用:对象名.方法名; 15.四大区 堆区:一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 栈区:由编译器自动分配释放,存放函数的参数值,局部变量的值等

16.oc中对象的创建,使用alloc来创建一个对象,编译器会给object对象分配一块可用内存地址,然后需要 对对象进行初始化调用init方法,这样这个对象才能使用 17.初始化方法以init开头,成功之后返回动态类型对象,失败返回nil 18.命名规则 类名首字母大写 实例变量,方法名字使用首字母小写,使用驼峰命名 19.@class 和#import解决循环引用解决死锁问题 比如A引用B而B又引用A,那么使用#import可以解决问题 import包含类所有的信息都会引入 20.property属性 在.h中声明@property @property (nonatomic) int myNumber; 在.m中使用@synthesize myNumber; 这样就可以替换set设置器和访问器

21.property (属性) readwrite:默认,有set和get readonly 只有get,没有set

assign:默认,引用计数器不增加 retain:引用计数增加1

原子性:atomic默认 非原子性:nonatomic (atomic是oc中一种线程保护技术,是防止在未完成的时候,被另外的一个线程使用)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JetpropelledSnake

Python面试题之Python中的类和实例

类,在学习面向对象我们可以把类当成一种规范,这个思想就我个人的体会,感觉很重要,除了封装的功能外,类作为一种规范,我们自己可以定制的规范,从这个角度来看,在以后...

12720
来自专栏机器学习从入门到成神

C++中重载、重写(覆盖)的区别实例分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35512245/articl...

11630
来自专栏null的专栏

python基础知识——内置数据结构(列表)

列表是python中使用较多的一种数据结构,通常是作为函数的返回类型。相比较于元组,列表中的元素是可以修改的,可以实现添加、删除和查找的操作。 1、列表的创建 ...

354100
来自专栏Danny的专栏

【J2SE快速进阶】——Java中的equals和==的区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

7920
来自专栏Django Scrapy

python使用正则表达式

正则表达式 目标: 了解 : (0)\w 匹配 一个字母或者数字 (1)\d 只匹配数字 (2)\s 至少匹配一个空格 同理"\_","\-"分别匹配 ...

40380
来自专栏静默虚空的博客

[Java 基础]方法

方法的定义 Java方法是语句的集合,它们在一起执行一个功能。 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 ...

20070
来自专栏牛肉圆粉不加葱

(3) - Scala case class那些你不知道的知识

除了在模式匹配中使用之外,unapply 方法可以让你结构 case class 来提取它的字段,如:

9110
来自专栏吾爱乐享

java之学习Integer类相关面试题

14440
来自专栏wym

运算符重载(超详细)

C++中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C++中重新定义这些运算符,赋...

17520
来自专栏desperate633

深入理解javascript中的继承机制(1)原型链继承机制将共有的属性放进原型中

javascript中的继承机制是建立在原型的基础上的,所以必须先对原型有深刻的理解,笔者在之前已经写过关于js原型的文章。

8320

扫码关注云+社区

领取腾讯云代金券