Object-C 自学笔记 - 1
1.基本变量类型
| 类型 | 标示符 | 输出格式 |
|---|---|---|
| 整形 | int | %i |
| 浮点 | float | %f |
| 双精度 | double | %g |
| 单字符 | char | %c |
以上是基本类型,除此之外还有long, long long int等等类型,还有一个比较特殊的id类型,后面会介绍id类型
2. 基本算术,条件,循环 和C,C++基本一致
3. 注释方式
单行注释: // 多行注释: /* */
4.基本输出,日志打印
NSLog(@"使用NSLog进行日志的输出");
5.函数的定义
几种函数定义格式
- 无参函数: -(return_type) function_name;
- 单个参数: -(return_type) function_name:(type)param;
- 多个参数: -(return_type) function_name:(type)param_1 [function_name](type)param_2;
[]为可写或者不写,如果有多个参数用空格进行分割 格式为[function_name](type)param,函数以;结尾
//例子 函数要放到class下才能使用
-(int) add:(int)a (int)b
{
return a + b;
}
6.类的定义
@interface class_name : super_class
@property int a, b; // 这样会自动生成SetA,A这两个函数,使用@property定义的变量需要在声明或者说实现里面@implementation里面使用@synthesize生成器生成
@class XYPoint; /// 告诉编译器XYPoint是一个class
// 下面是函数的定义
-(void) setNameIndex:(int)n;
...
@end
7.类的实现
@implementation class_name
@synthesize a, b; // 配合@property使用
-(void) setNameIndex:(int)n
{
a = n;
}
...
@end
类名中有一个比较有意思的术语:抽象类(abstract)或者抽象超类(abstract superclasses),在该类中定义了方法和实例变量,但是不希望你直接从该类创建实例
8. 动态绑定和id类型
id datetype;
datetype = class_1_val;
datetype = class_2_val;
id类型可以动态的绑定不同的类类型的变量来更改他指向的内容。我尝试了一下,貌似自带的那些int,double类型不能转换成id类型,用id类型绑定数据后,使用的方法需要在运行时进行检查。
9. 异常处理
// 格式
@try{
...
}
@catch(NSException *exception){
...
}
10. 子类对父类方法的调用
return_type val = [super func_name];
11. 作用域指令
@protected
@private
@public
@package ---> 这个作用域不是很清楚,书上的解释是对于64位映像,可以实现该类的映像中的任何地方访问这个实例变量Object-c特有的作用域
12. 静态变量,枚举变量,typedef的使用和C++一致
13. 分类
所谓分类其实就是把一个类里面的东西拆分成多个类
/// 原本的类
@interface Fraction : NSObject
@property width, height;
-(void)setW:(int)w setH:(int)h;
@end
/// 分类后的连个类
@interface Fraction : NSObject
@property width, height;
@end
@interface Fraction(OperatorClass) // 这里创建了一个新的类OperatorClass
-(void)setW:(int)w setH:(int)h;
@end
/// 这两个类的功能和之前的那个类功能完全相同,但是根据需要分成了一个定义实例变量类和具体操作方法类
14 协议
协议是多个类共享的一个方法列表。协议中列出的方法是没有实现的,需要其他人来实现
协议定义格式:
@protocol protocol_name
-(void) paint;
@optional // 之后的协议是否实现可以自由选择
-(void) outline;
@required // 之后的协议必须实现
-(void) shadow;
@end
Object-C 自学笔记 - 1的更多相关文章
- JS自学笔记04
JS自学笔记04 arguments[索引] 实参的值 1.对象 1)创建对象 ①调用系统的构造函数创建对象 var obj=new Object(); //添加属性.对象.名字=值; obj.nam ...
- JS自学笔记01
JS自学笔记01 1.开发工具 webstorm 2.js(javascript) 是一门脚本.解释性.动态类型.基于对象的语言 含三个部分: ECMAScript标准–java基本语法 DOM(Do ...
- JAVA自学笔记09
JAVA自学笔记09 1.子类的方法会把父类的同名方法覆盖(重写) 2.final: 1)可修饰类.方法.变量 2)修饰类时:此时该类变为最终类,它将无法成为父类而被继承 3)修饰方法时:该方法将无法 ...
- JAVA自学笔记11
JAVA自学笔记11 1:Eclipse的安装 2:用Eclipse写一个HelloWorld案例,最终在控制台输出你的名字 A:创建项目 B:在src目录下创建包.cn.itcast C:在cn.i ...
- JAVA自学笔记14
JAVA自学笔记14 1.正则表达式 1)是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.其实就是一种规则.有自己的特殊应用 2)组成规则: 规则字符在java.util.rege ...
- JAVA自学笔记12
JAVA自学笔记12 1.Scanner 1)JDK5后用于获取用户的键盘输入 2)构造方法:public Scanner(InputStream source) 3)System.in 标准的输入流 ...
- JAVA自学笔记15
JAVA自学笔记15 @例题1:共有5个学生,请把五个学生的信息存储到数组中,并遍历数组,并获取每个学生的信息 Students[] students=new Student[5]; Student ...
- JAVA自学笔记19
JAVA自学笔记19 1.集合总结 Collection(单列集合) List(有序可重复) ArrayList:底层数据结构是数组 ,查询快,增删慢.线程不安全,效率高 Vector:底层数据结构是 ...
- JAVA自学笔记17
JAVA自学笔记17 1.Map接口 1)概述 将键映射到值的对象,一个映射不能包含重复的键,每个键最多只能映射到一个值.可以存储键值对的元素 2)与Collection接口的不同: ①Map是双列的 ...
- JAVA自学笔记22
JAVA自学笔记22 1.操作基本数据类型的流 DataInputStream DataOutputStream 数据输出流允许应用程序以适当方式将基本的Java数据类型写入输出流中.然后,应用程序可 ...
随机推荐
- 2016 ASC 移动物联网安全高峰论坛 万物互联时代的安全与隐私
互联网的发展已经迈入了"万物互联"时代.移动设备作为人.物连接的主要入口,让人们享受高效.便利的"互联生活"的同时,也给用户的安全和隐私带来了前所未有的挑战.正 ...
- 有关Flash中与Java调用时候注意的一些事项
1.构建本地拓展的ActionScript库时候要注意SWF文件的版本兼容性: 参考:http://help.adobe.com/zh_CN/air/extensions/WS99209310cacd ...
- Java Object 对象拷贝答疑
Java Object 对象拷贝答疑 @author ixenos 摘要:在对象的clone过程需要注意的几点.关于关键字this.super 关于clone[对象拷贝] 在实际编程过程,有时候我们会 ...
- libmad编译
patch -Np1 -i ../libmad-0.15.1b-fixes-1.patch && sed "s@AM_CONFIG_HEADER@AC_CONFIG_HEAD ...
- GLSL 纹理贴图
#include <ork/render/FrameBuffer.h> #include <ork/scenegraph/SceneManager.h> #include &l ...
- Docker私有仓库1
一.搭建私有仓库 #环境 Ip 192.168.0.34 X86云主机 [root@lh- /]# uname -a Linux lh- -.el7.x86_64 # SMP Thu Mar :: U ...
- 挂接P2P通道-- ESFramework 4.0 进阶(08)
最新版本的ESFramework/ESPlus提供了基于TCP和UDP的P2P通道,而无论我们是使用基于TCP的P2P通道,还是使用基于UDP的P2P通道,ESPlus保证所有的P2P通信都是可靠的. ...
- c++的函数模板和类模板
函数模板和普通函数区别结论: 函数模板不允许自动类型转化 普通函数能够进行自动类型转换 函数模板和普通函数在一起,调用规则: 1 函数模板可以像普通函数一样被重载 2 C++编译器优先考虑普通函数 3 ...
- Chapter 14_4 使用_ENV
因为_ENV是一个普通的变量,我们可以像其他变量一样去对它进行赋值和访问. _ENV = nil 上面的赋值操作,将会使得在它之后的代码块不能直接访问全局变量.不过,对控制你的代码所使用的变量有用处. ...
- java代码块 静态、非静态
Java虚拟机的内存分区:Java栈.堆.方法区.本地方法栈.PC寄存器.还有一个常量池的概念,虚拟机会为每种类型分配一个常量池,而不是实例. 例如有一个类有很多子类,那么在父类定义的final变量, ...