一:Objective-C语言基础

二:Objective-C类与继承和协议

一:Objective-C语言基础:

1.1)#import 包含头文件  与#include 作用相同

1.2)Object-c类包含两大块代码

1、  接口MyClass.h

@interface MyClass

@end

2、  实现MyClass.m

@implementation MyClass

@end

1.3)没有在@interface中声明的方法依然可以在@implementation中调用。这是由于object-c是动态语言一般情况下,都会提供h文件,所以在m文件中写h文件中没有的方法,别人是不会知道的,这相当于将方法变相的私有化。类名第一个字母大写。

1.4)标准的类定义格式 :

MyClass.h

@ interface MyClass:NSObject{

//实例变量

}

- (NSString*) sayhello;

@end

MyClass.m

@implementation MyClass

-(NSString*) sayhello{

return @”Hello!”;

}

@end

1.5)分配内存与设置初始值

MyClass *myclass=[[MyClass alloc]init];

所有的object-c对象变量都是指针类型的,数据类型的右边要加一个星号。

1.6)消息和方法:

+或者- (返回类型)方法名: (参数类型)参数名;

类方法(+):通过发一个消息给类本身来调用

1、  工厂方法:给类分配实例的方法

2、  全局公用方法:可以被其他类调用,不需要实例化

实例方法(-):通过发一个消息给类的实例来调用

-  (void) setNumberator: (int) n;

1.7)调用方法:

[实例  方法];---------实例方法

[类名  方法];---------类方法

也可以理解为[接收方  消息];

变量 = [实例  方法];--------一个方法可以返回值,保存在变量中

[接收方  名字1:参数1  名字2:参数2  名字3:参数3 …];

1.8)可以使用”.”来调用一个变量实例

a.num=3;<=>[a  num:3];

1.9)nil(空)与C语言的NULL相同

Nil定义一个指向空的类(是class,不是对象)

1.10)数据类型:

1 char、int、float、double、long、unsigned short、const、static等

2 字符串:NSString

字符串常量 @” ”

3结构体struct、指针

4 id类型:可以存储任何类型的对象

typedef struct objc_object{

Class isa;

}*id;

Id是指向struct objc_object的一个指针,指向任何一个继承了NSObject类的对象,id是一个指针,在使用时不需要加星号。

Id取代int类型成为默认的数据结构。

5 BOOL  YES/NO 相当于C中的bool类型(true,false)

6 SEL  选择器:传递函数的方法,与c语言的函数指针、c++的函数引用相似。

         - (void)print;

         SEL sel = @selector(print);

         if([obj respondsToSelector:sel]){//判断该对象是否有相应的方法

              [obj performSelector:sel withObject:nil];//调用选择器方法

         } 

7 Class(类)被定义俄日一个指向struct objc_class的指针。

8 数组,在object-c中有NSArray类,因此很少用到数组。

1.11)操作符和控制语句

Object-C使用C语言中的运算符。

判断语句: if...else if...else/switch

循环语句 :while/for/do...while

1.12)输出函数:NSLog

输入函数:scanf

最新文章

  1. 题目:利用条件运算符的嵌套来完成此题:学习成绩&gt;=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
  2. POJ 2464 Brownie Points II(树状数组)
  3. powerdesigner的基本使用转载
  4. MyEclipse------File类的各种方法
  5. POJ 3693 (后缀数组) Maximum repetition substring
  6. Android studio启动后无法更新
  7. 自定义ListView适配器
  8. bzoj1934 bzoj2768
  9. qt获取本机网络信息
  10. Cocos2dx 3.0 过渡篇(三十一)ValueVector和Vector不得不说的故事
  11. 瑶瑶GBK好的,UTF-8卡死
  12. C++类的实例化的两种方法
  13. java集合概念
  14. python访问mysql
  15. 关于ViewPager+Fragment中的坑
  16. Python实现:汉诺塔问题
  17. Retrofit2 完全解析 探索与okhttp之间的关系
  18. hive Caused by: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
  19. Adaboost 算法实例解析
  20. javascript之封装(引用网络)

热门文章

  1. java web.xml listener servlet 和filter加载顺序
  2. Qt5官方demo分析集29——Extending QML - Property Value Source Example
  3. 所谓策略,我站在旁边看今天 神刻的样子O2O
  4. [Android]Parcelable encountered IOException writing serializable object (name = xxx)
  5. 解决方案命名空间“System.Web.Mvc”中不存在类型或命名空间名称“Ajax”(是否缺少程序集引用?)
  6. js 正则之 控制字符 \cX
  7. Windows WDDM显卡驱动框架及GPUView工具的使用(1)
  8. 蓝色的成长记录——追逐DBA(8):为了夺回SP报告,回顾oracle的STATSPACK实验
  9. elasticsearch集群搭建实例
  10. 编写高效的jQuery代码